初めてのPerl第17章 上級テクニック 練習問題のをこっそりRubyで
id:hakobe932が,なんか楽しそーな事をしてたので(ボクは必死にドット絵を描いてるってのに!),まねをしてみます.
単語のリストをファイルから読み込み,ユーザが入力した正規表現をマッチさせ結果を表示する
ほう.で,やってみた.
words = [] f = open("text.txt","r") or die words = f.readlines.map{|e| e.chomp} f.close while 1 # 空行の入力があるまで print "input regex:" ureg = gets.chomp break if ureg =~/^?s*$/ begin reg = /#{ureg}/ rescue # 例外 puts "regex error" next end matchs = words.select{|word| word =~ reg} puts "#{matchs.size} matches" puts matchs puts "-"*10 end puts "bye"
なんとか,hakobe932のPerlコードよりは短く出来た.
実行結果です.
$ ruby ureg.rb input regex:haruhi # 普通の文字列で 3 matches haruhi haruhi haruhi ---------- input regex:^[hy] # 当然正規表現もつかえます 5 matches haruhi yuki yuki haruhi haruhi ---------- input regex:(mikuru # 正規表現に問題があると regex error input regex: bye
うほ,同じ挙動っぽいですね.よし,気分転換終了.ドット絵を描くぞ.