Ruby grep正则表达式模式并将其存储在一个数组中

时间:2017-05-13 08:56:16

标签: ruby

红宝石中是否允许突出显示的部分?

......
......
text = File.read(file_name)
....
....
row = text.grep(/#{Regexp.escape(line)}/g) { |log| log.split.first } 
puts "From: #{row}"
.......
......  

(' line'变量替换保存字符串值,如-rr0 \ hu)

我知道我可以使用下面的方法来读取和搜索文件中的模式但是我必须读取多个文件并检查字符串是否存在(可能是多行)并获得匹配字符串的第一个单词' s line(s)。

File.open('abc.txt').grep(/rr0\hu/) { |line| line.split.first }

我如何在Ruby中执行此操作?

1 个答案:

答案 0 :(得分:1)

使用“match”字符串方法并循环遍历文件的每一行

fh = File.open('/path/to/file.txt', 'r') # If there are multiple files just loop through them.
fh.each_line do |line|
     if line.match(/REGEX/) then # "match" will find the regex in each line.
          puts line.split(" ")[0] # "split" will only print the first word of the matching string line
     end
end