我似乎无法弄清楚什么是注册。表达式。符号符合我的需要:
我在 DEBUG() 宏中包装了一些调试代码......
例如,要在日志级别 1 中打印一些调试输出,我使用以下代码位:
DEBUG_LVL_1(printf("some text");)
不过,情况并非总是如此——有时我的 printf 语句没有宏包装器。我想对这些情况进行搜索和替换......即没有 DEBUG_LVL_ 宏,但存在 printf 语句......
我怎么做?
我似乎无法弄清楚什么是注册。表达式。符号符合我的需要:
我在 DEBUG() 宏中包装了一些调试代码......
例如,要在日志级别 1 中打印一些调试输出,我使用以下代码位:
DEBUG_LVL_1(printf("some text");)
不过,情况并非总是如此——有时我的 printf 语句没有宏包装器。我想对这些情况进行搜索和替换......即没有 DEBUG_LVL_ 宏,但存在 printf 语句......
我怎么做?
如果您选择的语言/工具支持前瞻,您可以使用
^(?!.*DEBUG_LVL_1).*printf
(?!^.*DEBUG_LVL_1)
是一个否定的前瞻断言DEBUG_LVL_1
,如果在字符串中的某处找到,这将失败。
所以这个正则表达式将匹配printf
,但DEBUG_LVL_1
前提是同一行中没有某处。
给你^((?!DEBUG_LVL_1)printf.*)$
顺便说一句,使用这个网站http://rubular.com来检查你的正则表达式