Groovy 1.6.1以降で利用可能になった新しい正規表現処理用メソッド。
http://sjtai.blogspot.com/2009/04/new-find-and-findall-methods-for-string.html
より。
if ("abc" =~ /a../) { .. }
が
if ("abc".find(/a../) ) { ・・ }
などとかけるます。ちなみに上の両者のセマンティクスは厳密には違います。前者は最終的にMatcher#findが呼ばれ結果はbooleanなのに対して、後者はfind()メソッドの結果、つまりマッチすればその文字列、マッチしなければnullが返るというものです。*1
以下、使用例:
assert "abca".find(/a/) == 'a' assert "abca".find(/x/) == null assert "abca".findAll(/a/) == ['a', 'a'] assert "abca".findAll(/x/) == [] "abcdef".find(/(.)/){m0,m1->println m1 } a "abcdef".findAll(/(.)/){m0,m1->println m1 } a b c d e f
こんなかんじです。
"=~や=~="を覚えなくても良くなった!!!
ということか。まあ、確かにこれらの演算子は分かりにくいし覚えにくいともいえるからな。