documentation は、3つの正規表現固有の演算子について言及しています。
~
_はPattern
を返します=~
_ Matcher
の再実行==~
_はboolean
を返しますさて、どうすれば最後のものを否定できますか? (私は他の人が意味のある否定を持つことができないことに同意します。)
私は明白な考えを試しました:
_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: ... ???
_
最後の2つは、このように解釈すべきだと思います。
_println 'abc' != ~/^b.*/
_
ここで、new String("abc") != new Pattern("^b.*")
がtrue
であることがわかります。
私の知る限り、Groovyには否定された正規表現一致演算子はありません。
だから-cfrickですでに述べたように-最善の答えは式全体を否定することだと思われる:
println !('bb' ==~ /^a.*/)
別の解決策は正規表現を逆にすることですが、私には読みにくいようです: