我需要的是匹配多行预处理器的语句,例如:
#define max(a,b) \
({ typeof (a) _a = (a); \
typeof (b) _b = (b); \
_a > _b ? _a : _b; })
重点是匹配#define
和最后})
之间的所有内容,但我仍然无法弄清楚如何编写正则表达式。我需要它使用“re”模块使它在Python中工作。
有人可以帮帮我吗?
由于
答案 0 :(得分:3)
这应该这样做:
r'(?m)^#define (?:.*\\\r?\n)*.*$'
(?:.*\\\r?\n)*
匹配以反斜杠结尾的零行或多行,然后.*$
匹配最后一行。
答案 1 :(得分:0)
我觉得这样的事情会奏效:
m = re.compile(r"^#define[\s\S]+?}\)*$", re.MULTILINE)
matches = m.findall(your_string_here)
这假设您的宏都以'}'结尾,最后带有可选的')'。
答案 2 :(得分:0)
我认为以上解决方案可能不适用于:
#define MACRO_ABC(abc, djhg) \
do { \
int i; \
/*
* multi line comment
*/ \
(int)i; \
} while(0);