Wie Annulliere die Groovy-Match-Operator?

Den Dokumentation erwähnt drei regex-spezifische Operatoren:

  • ~ Rückkehr eine Pattern
  • =~ seiner Rückkehr eine Matcher
  • ==~ Rückkehr eine boolean

Nun, wie kann ich Annulliere den letzten? (Ich bin damit einverstanden, dass die anderen, kann keine sinnvolle negation.)

Habe ich versucht, das offensichtliche denken:

println 'ab' ==~ /^a.*/ //true: yay, matches, let's change the input
println 'bb' ==~ /^a.*/ //false: of course it doesn't match, let's negate the operator
println 'bb' !=~ /^a.*/ //true: yay, doesn't match, let change the input again
println 'ab' !=~ /^a.*/ //true: ... ???

Ich denke, die letzten beiden sollten interpretiert werden, wie dies eher:

println 'abc' != ~/^b.*/

wo kann ich sehen new String("abc") != new Pattern("^b.*") wird true.

  • es ist über einen operator, der dies tut und !(...) ist keine option?
  • Ich weiß nicht, ob es ist ein "match" - operator, aber man kann immer negieren das Ergebnis wie dieses: println !('abc' ==~ /^a.*/)
  • Es wäre schön, wenn es war prägnant, aber wenn nicht, dann ist das eine offensichtliche Antwort ist 🙁 ich hatte mehr erwartet ich denke, wie Perl hat !~.
  • fiel in die gleiche Falle (wenn so es sein). Aber "!=~" können sollten nicht interpretiert werden als "äquivalent" zu "!= ~" ! ... weiße Raum ist in der Regel einer der wichtigsten Faktoren in der syntax Parsen, nur etwa jeder computer-Sprache! IMHO sollte es werfen kompilieren/scripting-Fehler.
InformationsquelleAutor TWiStErRob | 2015-05-06
Schreibe einen Kommentar