【发布时间】:2017-02-09 14:28:57
【问题描述】:
我必须从大量的 cpp 文件中过滤掉所有定义的宏,不包括守卫,例如:
#if <NAME>
#ifdef <NAME>
#ifndef <NAME>
#if defined(<NAME>)
#if defined <NAME>
!defined(<NAME>)
!defined <NAME>
#else if <NAME>
#elif <NAME>
我必须检索所有的NAME,但它们并不都是 XXX 的形式,由于不同的程序员在项目上工作,有很多定义,所以我面临着问题定义一个正则表达式,它只能从刚刚描述的每种情况中推断出<NAME>。
感谢任何建议!
编辑 正如有人指出的那样,我的 NAME(带环绕 XXXX、XXXX、_XX_Y_、_XXX、_XXX_Y、XXYY,其中 X 和 Y 可以是大写字母或数字,名字没有规律!它们是预处理器的指令,我必须将它们过滤掉
【问题讨论】:
-
这是
grep或awk的工作,具体取决于您需要对找到的行做什么。
标签: c++ regex c-preprocessor preprocessor-directive ifdefine