我在PowerGrep中使用这个正则表达式,(这个正则表达式搜索字符串LAB RAD TRAN)
.*((LAB)|(RAD)|(TRAN)).*\r\n
搜索并删除包含字符串或字符串的一部分的纯文本行,并且效果很好。
现在我需要更多东西。我想保留单词LABER,但删除包含LAB的所有其他字符串,例如LABOR,LAB1,ALAB,ALABA等。
有没有办法保护"一个字符串LABER并删除包含LAB的所有其他字符串?
尝试使用*
更改上述正则表达式,但它总是包含我需要保留的LABER一词。任何解决方案?
答案 0 :(得分:1)
我认为PowerGrep支持外观断言;如果是这样,这应该有效:
.*((LAB(?!ER\b))|(RAD)|(TRAN)).*\r\n
虽然这样可以保留以LABER结尾的任何内容,而不仅仅是整个单词。
答案 1 :(得分:0)
您可以通过预测在表单中为正则表达式添加排除项:
(?m)^.*(LAB(?!(?:ER|OV)\b)|RAD|TRAN).*$
(?!(?:ER|OV)\b)
前瞻将检查序列LAB
是否后跟ER
或OV
以及字边界。
我正在将替换添加到前瞻中,因为您要求“保护”LABER
和LABOV
。
此外,由于您正在寻找整行,您可以使用多行模式(?m)
和^
/ $
锚点。