Regex 用于匹配的正则表达式不查找单词,然后查找另一个单词

Regex 用于匹配的正则表达式不查找单词,然后查找另一个单词,regex,Regex,我似乎不知道是什么原因。expr。符号符合我的需要: 我在DEBUG()宏中包装了一些调试代码 例如,要在日志级别1中打印一些调试输出,我使用以下代码位: DEBUG_LVL_1(printf("some text");) 不过,并非总是如此,有时printf语句没有宏包装器。 我想搜索并替换那些案例。。。i、 e.没有DEBUG_LVL__宏,但存在printf语句的情况下 如何做到这一点?如果您选择的语言/工具支持lookaheads,您可以使用 ^(?!.*DEBUG_LVL_1).*p

我似乎不知道是什么原因。expr。符号符合我的需要:

我在DEBUG()宏中包装了一些调试代码

例如,要在日志级别1中打印一些调试输出,我使用以下代码位:

DEBUG_LVL_1(printf("some text");)
不过,并非总是如此,有时printf语句没有宏包装器。 我想搜索并替换那些案例。。。i、 e.没有DEBUG_LVL__宏,但存在printf语句的情况下


如何做到这一点?

如果您选择的语言/工具支持lookaheads,您可以使用

^(?!.*DEBUG_LVL_1).*printf
(?!^.*DEBUG\u LVL\u 1)
是,如果在字符串中的某个位置找到
DEBUG\u LVL\u 1
,则此操作将失败

因此,这个正则表达式将匹配
printf
,但前提是同一行中没有
DEBUG\u LVL\u 1


查看它

在这里
^((?!DEBUG\u LVL\u 1)printf.*)
顺便说一句,使用此站点检查您的regexp所有
printf
而不带
DEBUG\u LVL\u
grep-r printf*;grep-v DEBUG\u LVL\u