列のデータには同じカテゴリーのデータが含まれている。 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)$
と書くことにする。次にこのデータの列を切り出す方法を学ぶ。