2024-06-30 15:07:13 发布
网友
我需要匹配多行预处理器的语句,例如:
#define max(a,b) \ ({ typeof (a) _a = (a); \ typeof (b) _b = (b); \ _a > _b ? _a : _b; })
关键是要匹配#define和最后一个})之间的所有内容,但我仍然不知道如何编写regexp。我需要它来使用“re”模块在Python中工作。在
#define
})
有人能帮帮我吗?在
谢谢
这应该做到:
r'(?m)^#define (?:.*\\\r?\n)*.*$'
(?:.*\\\r?\n)*匹配以反斜杠结尾的零行或多行,然后.*$匹配最后一行。在
(?:.*\\\r?\n)*
.*$
我认为上述解决方案可能不适用于:
#define MACRO_ABC(abc, djhg) \ do { \ int i; \ /* * multi line comment */ \ (int)i; \ } while(0);
我想这样的方法会奏效的:
m = re.compile(r"^#define[\s\S]+?}\)*$", re.MULTILINE) matches = m.findall(your_string_here)
这假设您的宏都以“}”结尾,结尾处有一个可选的“)”。在
这应该做到:
(?:.*\\\r?\n)*
匹配以反斜杠结尾的零行或多行,然后.*$
匹配最后一行。在我认为上述解决方案可能不适用于:
我想这样的方法会奏效的:
这假设您的宏都以“}”结尾,结尾处有一个可选的“)”。在
相关问题 更多 >
编程相关推荐