web-dev-qa-db-ja.com

Groovy一致演算子を無効にする方法は?

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であることがわかります。

23
TWiStErRob

私の知る限り、Groovyには否定された正規表現一致演算子はありません。

だから-cfrickですでに述べたように-最善の答えは式全体を否定することだと思われる:

println !('bb' ==~ /^a.*/)

別の解決策は正規表現を逆にすることですが、私には読みにくいようです:

JavaScriptで正規表現を反転するにはどうすればよいですか?

36
rdmueller