我需要一个正则表达式来查找类声明,这样我就可以在“class”关键字之前添加一个#define。正则表达式不一定非常完美,只是足以捕获大多数情况。
答案 0 :(得分:3)
/.*class\s+([^{]+)\s*[:]?([^{]+){/
这适用于大多数类定义,包括模板类。类名以1美元为单位,如果是派生类,则基数为2美元。
答案 1 :(得分:2)
怎么样:
/^\s*class\s/
这应该运作得相当好。我不太确定。
答案 2 :(得分:2)
/class\s+([^\s]+)/
这会将类名捕获为$ 1(或者在您正在使用的任何正则表达式框架中的等价物)。这将不适用于<>内可能包含空格的模板类在类名后面。解析这是正则表达式无法实现的,因为它需要匹配平衡的尖括号对。
答案 3 :(得分:1)
enum class myStrictEnum { // stuff };
相匹配)
这种方法效果很好并且足够严格,但可能比它需要的更冗长。
^(?!enum).*class\b\s\b[A-Za-z_][A-Za-z_0-9]*\b\s*($)?(|:\s*($)?(public|private|protected)\s*($)?\b[^{]*\s*)\s*($)?{