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