下面是我编写的一个正则表达式,用于匹配 C / C++ 代码中的多行预处理器宏。我绝不是正则表达式专家,所以我欢迎任何关于如何使它变得更好的建议。
这是正则表达式:
\s*#define(.*\\\n)+[\S]+(?!\\)
它应该匹配所有这些:
#define foo(x) if(x) \
doSomething(x)
但只有其中一些(不应该匹配下一行代码:
#define foo(x) if(x) \
doSomething(x)
normalCode();
也不应该匹配单行预处理器宏。
我很确定上面的正则表达式有效 - 但正如我所说,可能有更好的方法来做到这一点,我想有办法打破它。任何人都可以提出任何建议吗?