0

我想找到所有 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

4

1 回答 1

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*;).)+;/)
}
于 2013-05-21T17:58:34.393 回答