基礎プログラミング I 第 7 回 (正規表現と Ruby 言語でのプログラミング) 「繰り返す文字列を探したい」 講義ノート目次

( ) を使うと多彩な組み合わせによる検索が可能である。

同じ文字を繰り返すものを検索したい

(\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 manymany so までも検索される。

さらに、例えば 「レレレのおじさん」「ゲゲゲの鬼太郎」を取りだすには、 (\S)\1\1 である。

実際にデータを作成し、取り出して、なぜそうなるかを解説せよ。