【发布时间】:2011-09-20 04:17:57
【问题描述】:
我想测试一个方法是否出现在头文件中。这是我的三个案例:
void aMethod(params ...)
//void aMethod(params
// void aMethod(params
^ can have any number of spaces here
这是我目前所拥有的:
re.search("(?<!\/\/)\s*void aMethod",buffer)
Buf 这只会匹配第一种情况,而第二种情况。我该如何调整它以使其也与第三个匹配?
编辑:对不起,我没有正确表达自己。如果不在评论中,我只想匹配。很抱歉。
【问题讨论】:
-
你想用
(?<!\/\/)后面的负面外观来实现什么,这意味着你不想在评论行上匹配,但这意味着它应该只匹配第一种情况。 -
在我的测试中,正则表达式匹配第一种和第三种情况,如预期的那样。 Geo,你确定,它匹配第一种和第二种情况?
-
天啊!我没有表达清楚。如果不在评论中,我只想匹配。我再问一个问题。
-
如果您想忽略 cmets,我建议您首先“预处理”您的文件以忽略/删除 cmets。如果您逐行处理文件,只需在搜索您的方法之前检查它是否是注释行。另见 pygments 的 clexer:pygments.org/docs/api/#lexers