( )を使うと多彩な組み合わせによる検索が可能である。
"(\S)\1"
を試してみよう。
"\S"
は空白文字以外を探し、\1 は ()に出てくるもの 1
回繰り返すという意味である。二つ合わせて 2 文字同じ並びのものを探す、
という意味である。
% ./std_regexp.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"
である。