Unix grep 有一个简单的-o, --only-matching
选项,只显示与PATTERN匹配的匹配行的部分。
使用grep方法或任何其他标准方法(不使用exec或gems)模拟Ruby中这种行为的最简单方法是什么?
给出的例子:
File.open('test.css','r') do |file|
file.each_line do |line|
match=/p[A-Z]+/.match(line)
puts match.to_s unless match.nil?
end
end
会模仿grep -oE "p[A-Z]+" test.css
。
我想有更好的(更清洁,更简洁)的方式。
答案 0 :(得分:1)
利用@ avinash-raj,我最终得到了这个:
puts File.open('test.css','r'){|f| f.read.scan(/p[A-Z]+/)}
对于不占用太多内存空间的文件来说,这似乎是一件好事。
仍然对其他解决方案持开放态度。
答案 1 :(得分:0)
使用String#scan
获取所有匹配项的数组:
File.foreach('test.css') do |line|
line.scan(/p[A-Z]+/).each do |match|
puts match
end
end