ruby multiline grep in file

时间:2013-05-20 21:47:50

标签: ruby grep multiline

我想找到c ++方法不以“NULL”结尾的所有情况;“ (NULL和之间的任意数量的空格)和;应该仍然让它匹配)。

我的代码是:

Dir['**/*'].select { |f| File.file?(f) } .map {
   |file| a=File.open(file).read 
   puts a.grep(/begin((?!NULL\s*\)\s*;).)+;/m)
}

我希望它匹配以下行:

begin

anything in here but a paren any number of spaces semicolon
);

但不匹配

begin 
somestuff that doesn't matter NULL);

且不匹配

begin 
somestuff that doesn't matter 
NULL);

问题是我的代码目前只匹配单行。

Rubular就在这里: http://rubular.com/r/Ex9kmQLecH

1 个答案:

答案 0 :(得分:0)

我最终做了一个hacky解决方案,我从来没有得到多行的东西工作。

Dir['**/*'].select { |f| File.file?(f) } .map {
   |file| a=File.open(file).read 
   a.gsub("\n"," ")
   a.gsub(";",";\n")
   puts a.grep(/begin((?!NULL\s*\)\s*;).)+;/)
}