我正在尝试编写一个正则表达式来匹配 C 程序中的 C 预处理器命令。我想知道你能不能给我一些建议?
非常感谢你。
那将是
grep '^[[:blank:]]*#'
请注意,这只会 grep 多行预处理器指令的第一行(继续使用反斜杠换行符)。
可能是这样的:(虽然不太准确)
\s*#\s*(define|error|import|undef|elif|if|include|using|else|ifdef|line|endif|ifndef|pragma)\s*\S*
您可以使用cpp
并传递选项-dM
来列出所有已定义的宏。
cpp -dM test.c
此正则表达式说明了如何\
使用递归正则表达式集成反斜杠换行符:
#(?<line>[^#].*?(\n|(\\[^\n]*\n(?&line))))
希望这可以帮助。