用Ruby中的正则表达式切换案例?

时间:2015-05-20 11:41:31

标签: ruby-on-rails ruby regex

我制作了一个Ruby脚本,它使用正则表达式从文件中剪切线条并将其粘贴到新文件中。那部分工作正常。现在我想在控制台中输入一个区域,输出应该只显示我之前键入的区域。

例如,我正在寻找这个" ipc-abc-01"并键入abc in,现在它应该显示所有带有abc的条目。

found = 0
words = [] 

puts "Please enter a word to search the list"
input = gets.chomp

#Open text file in read mode 
File.open("list.txt", "r+") do |f|

  f.each do |line|
   if m = line.match( /\b#{input}\b/i )
      puts "#{m[0]} "
      # ... etc.
      found = 1
    end
  end
end 

2 个答案:

答案 0 :(得分:0)

要匹配包含zhb的所有字词:
zhb440 zhb440 izhh550 ipc-zhb790-r-br-01
您可以使用:

\S*?(?:zhb)\S*

if line =~ /\S*?(?:zhb)\S*/
    match = $~[1]
else
    match = ""
end

See the DEMO

答案 1 :(得分:0)

这是你在找什么?这将以用户输入的正则表达形式不区分大小写的方式搜索所有字符串。

words = []

print "Please enter a word to search the braslist: "
input = gets.chomp

#Open text file in read mode 
File.open("braslist.txt", "r+") do |f| 
    f.each do |line| 
        words += line.split(" ").grep(/#{input}/i)
    end
end 

puts "#{words.length} words found!"
puts words