jsr-03の正規表現の挙動が変わっている

http://jira.codehaus.org/browse/GROOVY-1000

groovy> println org.codehaus.groovy.runtime.InvokerHelper.getVersion()
groovy> m = "123" =~ /(.)/
groovy> println m[1]
groovy> go
1.0-jsr-02
1
groovy> println org.codehaus.groovy.runtime.InvokerHelper.getVersion()
groovy> m = "123" =~ /(.)/
groovy> println m[1]
groovy> go
1.0-jsr-03
[2, 2]

groovy> m = m[0] // jsr-03 over
groovy> println m[1]
groovy> go
1

たしかに

pattern = /(?:ab([c|d]))/
matcher = "abcabd" =~ pattern;
while (matcher.find()) {
  println(matcher[1]);
}

が jsr-02だと無限ループしちゃうのはわかるけど改悪だと思うな。
というかやっぱり perl の $ が必要でしょう。かきかえるかな?

なんかほかにもありそうで怖いな。