用于匹配非虚拟的C ++方法声明的正则表达式模式

时间:2012-04-27 17:11:10

标签: regex

我正在尝试找到一个正则表达式来匹配C ++头文件中非虚拟的方法声明。我有它在大多数情况下工作,但是如果在虚拟之后有一个换行并且方法声明在下一行,我的正则表达式将匹配它,这不是我想要的。因此,我需要正则表达式引擎回溯到上一行并检查虚拟关键字。这是一个基本的例子:

源文件摘要:

void Process(char* name, int val); // Should match, this one works
virtual char* GetName(); // Should not match since it is virtual, this one works
virtual
        flag_type SetValue(uint8 resourceIndex, char* name); // Should not match, but this line matches since virtual is on previous line!

这是我的正则表达式: (^\s*\w+\**(?<!virtual)\s+\w+\s*\()(\s*\w+\**\s+\**\w+,?)*\s*\)\s*;

1 个答案:

答案 0 :(得分:0)

我发现了一些对我有用的东西,包括Emanuele指出的缺陷(尽管它也会在注释行中匹配):\b(?<!virtual\s+)\w+\**\s+\w+\s*\((\s*\w+\**\s+\**\w+,?)*\s*\)\s*;