需要在Regex中创建NOT LIKE Con​​dition1 OR Condition2或Condition3等价

时间:2017-02-23 14:21:12

标签: regex regex-negation

我试图在正则表达式中执行NOT LIKE Con​​dition1 OR Condition2 OR Condition3等价。我想查找包含任何子字符串的所有字符串[1 to 5] 2 TO * -sample *0-9AZc *testing * 2344 +field value some_field mmm e-A[0-9]* [ *p{L} [n-z]] broken* awef * sdf TZ* [* i sto 5] {* to 3}

从这个帖子here我得出结论,可以写RSBO,RRABO,RSISTA0来查找不包含短语^((?!RSISTA0).)*$的所有字符串

所以对于我的要求,当我有三个必须满足的条件时,我试过:

RSISTA0

,但后来我认为^((?!RSBO).)*$|^((?!RRABO).)*)$|^((?!RSISTA0).)*$ 操作可能应该是|等价。为此,我发现可以模仿AND操作here

这给了我解决方案:

AND

然而,这导致我根本不返回任何字符串,即使我知道有些字符串不包含我需要过滤掉的任何子字符串。

有没有人有任何想法?

2 个答案:

答案 0 :(得分:2)

你很亲密。你只需将这些词放在负面的前瞻中就像这样:

^(?:(?!RSBO|RRABO|RSISTA0).)*$

它不会匹配包含RSBORRABORSISTA0的任何字词,但会匹配任何其他文字。

See the demo

答案 1 :(得分:1)

^((?!RSBO)(?!RSISTA0)(?!RRABO).)*$

我相信这就是诀窍。在regex101上成功测试。可能效率低下,因为它展望了每一个角色,但我找不到像这样做的方法。

编辑:我不认为一开始就需要积极向前看,所以我将其从原来的答案中删除了。