データ部分を ( ) で囲うと、必要な情報だけを取り出すことができた。 onzen あるいは onsen (温泉) に行きたいという客のためには
% ./regexp_cutout.rb station.dat 検索パターン : on[sz]en かみのやま温泉駅 あつみ温泉駅
と駅名だけが出力された方が分かりやすい。このようにするために、 切り出すプログラム部分を作ろう。 regexp_cutout.rb を作る。 std_regexp.rb を少し変更して作る。
#!/usr/koeki/bin/ruby
STDERR.print "検索パターン : "
pattern = STDIN.gets.chomp
request = Regexp.new(pattern, true, "e")
while station = gets
if request =~ station
# print station
if /(\S+)\s+(\S+)\s+(\S+)\s+(\S+)/ =~ station
printf("%s駅\n", $1)
end
end
end
実行し、上のように出力されるか確かめよう。