如何修改此正则表达式以匹配所有三种情况?

时间:2011-06-22 08:14:18

标签: python regex

我想测试一个方法是否出现在头文件中。以下是我遇到的三种情况:

void aMethod(params ...)
//void aMethod(params
// void aMethod(params
  ^ can have any number of spaces here

这是我到目前为止所拥有的:

re.search("(?<!\/\/)\s*void aMethod",buffer)

Buf这只会匹配第一种情况,第二种情况。我怎么能调整它以使它与第三个匹配呢?

编辑:抱歉,但我没有正确表达自己。我只想匹配,如果不在评论中。很抱歉。

4 个答案:

答案 0 :(得分:7)

编辑:好的,在您编辑之后,Geo,就是这样:

^(?<!\/\/)\s*void aMethod

答案 1 :(得分:2)

如果您只是想找到'void aMethod(params')的所有外观,那么您可以使用以下内容:

a = """void aMethod(params ...)
//void aMethod(params
// void aMethod(params
  ^ can have any number of spaces here"""
from re import findall
findall(r'\bvoid aMethod\b', a)

OR:

findall(r'(?:\/\/)?[ ]*void aMethod', a)

答案 2 :(得分:1)

试试这个正则表达式。

(\/\/)?\s*void aMethod

答案 3 :(得分:1)

对于三个选项:(?:\/\/)?\s*void aMethod