正規表現パターンマッチングのPerlとGroovyでの書き方の違い(2010-5-20の修正・補足版)
キーワードが含まれているかを判定
Perl(=~を使った場合)
my $text = "apple banana cherry"; print ($text =~ /banana/ ? "yes\n" : "no\n");
Perl(!~と!/.../を使った二重否定)
my $text = "apple banana cherry"; print ($text !~ !/banana/ ? "yes\n" : "no\n");
Groovy(=~を使った場合)
def text = "apple banana cherry" println (text =~ /banana/ ? "yes" : "no")
Groovy(==~を使った場合)
def text = "apple banana cherry" println (text ==~ /.*banana.*/ ? "yes" : "no")
Groovy(matchesを使った場合)
def text = "apple banana cherry" println (text.matches(/.*banana.*/) ? "yes" : "no")
キーワードが含まれていないかを判定
Perl(!~を使った場合)
my $text = "apple banana cherry"; print ($text !~ /banana/ ? "yes\n" : "no\n");
Perl(=~と!/.../を使った場合)
my $text = "apple banana cherry"; print ($text =~ !/banana/ ? "yes\n" : "no\n");
Groovy(=~と!/.../を使った場合)
def text = "apple banana cherry" println (text =~ !/banana/ ? "yes" : "no")
Groovy(==~と!/.../を使った場合)
def text = "apple banana cherry" println (text ==~ !/.*banana.*/ ? "yes" : "no")
Groovy(matchesの結果を!で否定する場合)
matchesで!/.../を使うとコンパイルエラーになるため、結果を!で反転する。
def text = "apple banana cherry" println (!text.matches(/.*banana.*/) ? "yes" : "no")