基礎プログラミング I 第 7 回 (正規表現と Ruby 言語でのプログラミング) 「空白を利用してデータを取りだすには」 講義ノート目次

列のデータには同じカテゴリーのデータが含まれている。 station.dat なら、駅名、都道府県、かな、アルファベットと並んでいる。 県に存在し、 ma または ta で終わる地名を探すには

%./regexp_stdin.rb station.dat 
検索パターン : (\S+県)\s+(\S+)\s+(\S+[mt]a)$
新潟新潟県にいがたNiigata
小山栃木県おやまOyama
郡山福島県こおりやまKoriyama
福島福島県ふくしまFukushima
高畠山形県たかはたTakahata
山形山形県やまがたYamagata
村山山形県むらやまMurayama
新発田新潟県しばたShibata
酒田山形県さかたSakata
象潟秋田県きさかたKisakata
秋田秋田県あきたAkita
升形山形県ますかたMasukata
東酒田山形県ひがしさかたHigashisakata

文字列の切り取りを復習しておこう。

\S+ 空白文字以外の文字列が 1 個以上並んでいるものを探す
\s+ 空白文字が 1 個以上並んでいるものを探す

これを組み合わせ、

空白 よみがな 空白 アルファベット [mt]a$

を作った。 遠い位置にあるデータの条件とを組み合わせて検索することができるようになる。 データの列と空白文字列を分解するとき、 () を使う。

% ./regexp_stdin.rb station.dat 
検索パターン : (\S+県)\s+(\S+)\s+(\S+[mt]a)$

と書くことにする。次にこのデータの列を切り出す方法を学ぶ。

上野駅から出発する。 最後の駅が no で終わる駅を探したい。 このように東京都に属する駅を除いて駅名を探すときにこれが使える。 実際試し、何駅が検索されるか調べよ。