Groovyはネイティブで ~"パターン" 表記を使用した正規表現をサポートします。それは、与えられたパターン文字列からコンパイルされた Java Pattern オブジェクトを生成します。また、Groovyは =~ 演算子(Matcherを生成)と ==~ 演算子(Stringとそのパターンがマッチするかどうかのboolean値を返す)もサポートします。
Matcherオブジェクトはグループを持つことがあるため、matcher[index]がマッチした文字列もしくはマッチしたグループの文字列リストとなります。
Matcherは *find()*メソッドをコールすることで強制的にboolean値となるため、(if文、while文ほかの)条件節として現れたとき、 =~ 演算子はPerlの =~ 演算子の単純な使用法と同じ働きをします。
”より厳密に働くように見える” ==~ 演算子は、対象文字列全体との正確なマッチを要求します。Matcherではなく、Booleanを返します。
正規表現のサポートは、Javaから取り込まれています。Javaの正規表現言語とAPIはここにドキュメントされています。
他の例
目的: 各行の始めにある単語の語頭を大文字にします:
目的: 文字列中の全ての単語の語頭を大文字にします:
単語の残りの部分を小文字にするために.toLowerCase() を追加します。
つまづきやすいところ
String.replaceAll() の後方参照の使い方では、GStringは期待通りに動作しません。
これは次のようなエラーとなります。
... illegal string body character after dollar sign:
solution: either escape a literal dollar sign "\$5" or bracket the value expression "${5}" @ line ...
解決法:
置換文字列を ' か / で括るようにします。