Groovyメモ

Groovyでちょいと正規表現を触ってて気づいたところ


pat = "\\d{5}"
text1 = "12345"
println "pat is ${pat} matches ${text1} ?"
println text1 ==~ pat // これはtrueになる

text2 = "a12345"
println "pat is ${pat} matches ${text2} ?"
println text2 ==~ pat // これだとfalseになる なんで?

text3 = "a1234"
println "pat is ${pat} matches ${text3} ?"
println text3 ==~ pat // これは当然false。

バグ?
それとも俺の正規表現の理解が間違ってたのかな?と思いRubyで動作を見てみる

$ ruby -e 'if "a12345" =~ /\d{5}/; print "match!\n"; end'
match!
動くよな、当然だよな。
うーん。正規表現の比較演算子の使い方が間違ってるのかな?