初めての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

うほ,同じ挙動っぽいですね.よし,気分転換終了.ドット絵を描くぞ.