我试图在正则表达式中执行NOT LIKE Condition1 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
然而,这导致我根本不返回任何字符串,即使我知道有些字符串不包含我需要过滤掉的任何子字符串。
有没有人有任何想法?
答案 0 :(得分:2)
你很亲密。你只需将这些词放在负面的前瞻中就像这样:
^(?:(?!RSBO|RRABO|RSISTA0).)*$
它不会匹配包含RSBO
,RRABO
或RSISTA0
的任何字词,但会匹配任何其他文字。
答案 1 :(得分:1)
^((?!RSBO)(?!RSISTA0)(?!RRABO).)*$
我相信这就是诀窍。在regex101上成功测试。可能效率低下,因为它展望了每一个角色,但我找不到像这样做的方法。
编辑:我不认为一开始就需要积极向前看,所以我将其从原来的答案中删除了。