基礎プログラミング I 第07 回 正規表現と Ruby 言語でのプログラミング 空白を利用してデータを取りだすには

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

% ./std_regexp.rb station.dat 
検索パターン : (\S+県)\s+(\S+)\s+(\S+[mt]a)$
新潟            新潟県  にいがた                Niigata
小山            栃木県  おやま                  Oyama
郡山            福島県  こおりやま              Koriyama
福島            福島県  ふくしま                Fukushima
高畠            山形県  たかはた                Takahata
山形            山形県  やまがた                Yamagata
村山            山形県  むらやま                Murayama
新発田          新潟県  しばた                  Shibata
酒田            山形県  さかた                  Sakata
象潟            秋田県  さきかた                Sakikata
秋田            秋田県  あきた                  Akita
升形            山形県  ますかた                Masukata
東酒田          山形県  ひがしさかた            Higashisakata
\S+ : 空白文字以外の文字列が 1 個以上並んでいるものを探す
\s+ : 空白文字が 1 個以上並んでいるものを探す

これを組み合わせ、

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

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

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

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

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

本日の講義 / 講義ノート / 教員トップページ