1

我正在尝试在我的代码库中搜索以下模式的实例:

m_vParts[foo] = 

以及具有不同空格的类似实例。所以我可以使用这个正则表达式:

m_vParts\[.*\]\s*=[^=]\s*

当我在http://gskinner.com/RegExr/和其他 regex-tester 类型的网站上测试它时,它找到了我想要的。但是,当我实际上grep(或egrep)我没有得到任何结果时。我的猜测是我的正则表达式对于正则表达式grep的方言格式不正确,但我不确定我到底在哪里。

这是我给出的实际命令:

[e]grep -Irn "m_vParts\[.*\]\s*=[^=]\s*" .

我试过单引号和双引号。

这是代码库的示例代码的一小部分示例:

pcTab->m_vParts[iLastPart] = pcPart;
if ( m_pcCurrentTab->m_vParts[i]== pcPart )

我希望第一行是匹配的,而第二行不是。

另外,我应该注意我在 Windows 7 x64 上使用 GnuWin32 grep。

在此先感谢您的任何指导;非常想避免非自动搜索:)

4

1 回答 1

1

只需在 re 周围添加引号:

$ vim 1.txt
$ egrep 'm_vParts\[.*\]\s*=[^=]\s*' 1.txt
pcTab->m_vParts[iLastPart] = pcPart;

如您所见,一切正常。

于 2012-07-23T19:43:19.293 回答