我必须在字符串中检查模式(模式C)的正匹配以及模式A和模式B的否定匹配。如何在单个正则表达式中执行此操作?
如果模式C在那里,则字符串中不应存在模式A和模式B.
请帮我查看代码段。以下代码不适用于5.8.5和5.10.1
open(FH, "file");
while(<FH>){
print if(/(?!PATTERN A)(?!PATTERN B)(?=PATTERN C)/);
}
close FH;
答案 0 :(得分:3)
这完全取决于你如何编写模式..
该模式应始终以.*?
或.*
所以,你可以写
(?!.*?PATTERN A)(?!.*?PATTERN B)(?=.*?PATTERN C)
答案 1 :(得分:1)
除非环境需要,否则不需要花哨的正则表达式。你所需要的只是
print if /PATTERN A/ and not (/PATTERN B/ or /PATTERN C/);