Regex不匹配带有或不带有制表符的确切字符串

问题描述 投票:-1回答:2

我希望在使用制表符作为字符串分隔符的行中不匹配任何包含确切字符串的行。这意味着,如果此确切的字符串的前面,后面,两侧或两侧都没有制表符,则该行不应与该行匹配。

让我们说不匹配的字符串是cd ef

提供此数据

eid cd ef
cd ef   kop
cd efs
hodjjk  
    cd ef   
8cd ef  
    cd ef
cd ef
    cd efkk

这些行应该不匹配:1、2、5、7、8

其他行应匹配

这是我到目前为止所拥有的

^(?!cd ef|\tcd ef|cd ef\t|\tcd ef\t).*$

请参阅regex

这不会使所需的结果安静下来

任何帮助将不胜感激

谢谢

regex pcre regex-lookarounds exact-match
2个回答
1
投票

如果我理解得很好,则模式可能是(使用m修饰符):

^(?!.*(?:^|\t)cd ef(?:$|\t)).*

demo


0
投票

这里有一种可能,它匹配您要的所有行,但不匹配\bcd ef\b的全部行,如果要匹配所有的行,请使用:.*?\bcd ef\b.*

然后,如果您正在使用允许您执行此操作的编程语言,则可以采用相反的方法。

如果没有,您可以使用:^([^c\n]*(?!\bcd ef\b)(c[^c\n]*)*)+$也会起作用,但由于必须返回而不能达到高性能

© www.soinside.com 2019 - 2024. All rights reserved.