Ruby Tips!

RubyのTipsを紹介します

正規表現で単語をマッチさせる

特定の単語にマッチする正規表現

例えばappという単語を正規表現でマッチさせることを考える。欲しいのはappのみで、appleのようにappを含む別の単語にはマッチさせたくないとする。

このような場合、単語の区切りを表すメタ文字\bを利用して、以下の正規表現で要件を満たせる。

/\bapp\b/ =~ "this app is very nice." #=> 5
/\bapp\b/ =~ "this apple is very nice." #=> nil

\bは単語構成文字\wと、非単語構成文字\Wの境界にマッチするメタ文字だ。基本的に単語構成文字は文字クラス[a-zA-Z0-9_]と等価だが、Ruby 1.8では日本語文字にもマッチすることに注意。

任意の単語にマッチする正規表現

続いて、任意の単語とマッチする正規表現を考えることにする。任意の単語は、単語構成文字を表すメタ文字\wを使って、その連続+と表現できる。よって以下の正規表現で要件を満たせる。

"This is a pen.".scan(/\w+/) #=> ["This", "is", "a", "pen"]