正则表达式删除包含带异常的单词的行

时间:2015-07-08 11:50:01

标签: regex

我在PowerGrep中使用这个正则表达式,(这个正则表达式搜索字符串LAB RAD TRAN)

.*((LAB)|(RAD)|(TRAN)).*\r\n

搜索并删除包含字符串或字符串的一部分的纯文本行,并且效果很好。

现在我需要更多东西。我想保留单词LABER,但删除包含LAB的所有其他字符串,例如LABOR,LAB1,ALAB,ALABA等。 有没有办法保护"一个字符串LABER并删除包含LAB的所有其他字符串? 尝试使用*更改上述正则表达式,但它总是包含我需要保留的LABER一词。任何解决方案?

2 个答案:

答案 0 :(得分:1)

我认为PowerGrep支持外观断言;如果是这样,这应该有效:

.*((LAB(?!ER\b))|(RAD)|(TRAN)).*\r\n

虽然这样可以保留以LABER结尾的任何内容,而不仅仅是整个单词。

答案 1 :(得分:0)

您可以通过预测在表单中为正则表达式添加排除项:

(?m)^.*(LAB(?!(?:ER|OV)\b)|RAD|TRAN).*$

(?!(?:ER|OV)\b)前瞻将检查序列LAB是否后跟EROV以及字边界。

我正在将替换添加到前瞻中,因为您要求“保护”LABERLABOV

此外,由于您正在寻找整行,您可以使用多行模式(?m)^ / $锚点。