単語にマッチさせる

単語を含むかどうか調べる

「spec」を検索したいが「specfification」はマッチして欲しく
ないようなこと。
境界正規表現エンジンの単語境界の「\b」を使用する

groovy:000> "Java spec".find(/\bspec\b/)
===> spec
groovy:000> "Java specification".find(/\bspec\b/)
===> null
"うどん".find(/\bうどん\b/)
===> うどん
"ちきしょうどんだけだよ".find(/\bうどん\b/)
===> null

↑日本語でも同じようにマッチはする。

"あいうabc".find(/あいう\b/)
===> null

↑しかし、ひらがなとアルファベットの隙間はマッチしない

単語にマッチさせる

一般の単語にマッチさせる場合

文字の連なり

"This is \ta 2pen."

m1 = (~/\w+/).matcher("This is \ta 2pen.")
m1.find()
m1.each{println it}
===> true
===> java.util.regex.Matcher[pattern=\w+ region=0,16 lastmatch=]
This
is
a
2pen
===> java.util.regex.Matcher[pattern=\w+ region=0,16 lastmatch=]
アルファベットの連なり
m2 = (~/(?i)[a-z]+/).matcher("This is \ta 2pen.")
m2.find()
m2.each{println it}
===> java.util.regex.Matcher[pattern=(?i)[a-z]+ region=0,16 lastmatch=]
===> true
This
is
a
pen
===> java.util.regex.Matcher[pattern=(?i)[a-z]+ region=0,16 lastmatch=]

(?i)は大文字と小文字を区別しないマッチングの埋め込みフラグ表現
CASE_INSENSITIVEの項目参照

非空白文字の連なり
"This is \ta 2pen.".split().each{println it}
This
is
a
2pen.
===> [Ljava.lang.String;@a51027