( ) を使うと多彩な組み合わせによる検索が可能である。
(\S)\1
を試してみよう。
\S
は空白文字以外を探し、
\1
は
()
に出てくるものを 1 回繰り返すという意味である。
二つ合わせて 2 文字同じ並びのものを探す、
という意味である。
%./regexp_stdin.rb station.dat
検索パターン : (\S)\1
大宮 | 埼玉県 | おおみや | Omiya |
新潟 | 新潟県 | にいがた | Niigata |
大石田 | 山形県 | おおいしだ | Oishida |
羽前前波 | 山形県 | うぜんぜんなみ | Uzenzennami |
北余目 | 山形県 | きたあまるめ | Kitaamarume |
と出力される。 ひらがなだけでなくアルファベットが繰り返されているものも検索された。
( )\数字( )...( )\Nで、N番目の( ) と等しい文字列の置き換え
(so|many)\1
ならば、
so so
および
many many
が検索される。
(so|many)(so|many)
の場合、上記の二つのほか、さらに
so many
や
many so
までも検索される。
さらに、例えば
「レレレのおじさん」「ゲゲゲの鬼太郎」を取りだすには、
(\S)\1\1
である。
実際にデータを作成し、取り出して、なぜそうなるかを解説せよ。