正規表現の組み合わせ

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

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

"(\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" である。

本日の講義目次 / 基礎プログラミング I / 2007 年度

Madoka Nishimura <madoka.koeki-u.ac.jp>