正規表現パターンマッチングのPerlとGroovyでの挙動が異なる
my $text = 'apple banana cherry'; if ($text =~ /banana/) { print "YES\n"; } else { print "NO\n"; }
def text = 'apple banana cherry' if (text ==~ /banana/) { println "YES" } else { println "NO" }
同じ正規表現パターンでも、Perlでは"YES"、Groovyでは"NO"となってしまう。
Groovyでマッチングさせるには、次のようなパターンに変える必要がある。
def text = 'apple banana cherry' if (text ==~ /.*banana.*/) { println "YES" } else { println "NO" }
どうやら前後に空文字を含む任意の文字列があると宣言しなければならないらしいので要注意。(Groovyのバージョンは1.6.8)