需要在正则表达式中创建一个 NOT LIKE Condition1 OR Condition2 Or Condition3 等价物
Need to create a NOT LIKE Condition1 OR Condition2 Or Condition3 equivalence in Regex
我正在尝试在 Regex 中进行 NOT LIKE Condition1 OR Condition2 OR Condition3 等价。我想找到 not 包含任何子字符串 RSBO,RRABO,RSISTA0
的所有字符串
从这个线程 here 我得出结论,可以编写 ^((?!RSISTA0).)*$
来查找所有不包含短语 RSISTA0
的字符串
所以对于我的要求,当我必须满足三个条件时,我尝试了:
^((?!RSBO).)*$|^((?!RRABO).)*)$|^((?!RSISTA0).)*$
,但后来我认为 |
操作可能应该是 AND
等价。为此,我发现可以模仿 AND
操作 here
这给了我解决方案:
(?=^((?!RSBO).)*$)(?=^((?!RRABO).)*)$(?=^((?!RSISTA0).)*$)
然而,这导致我根本 return 任何字符串,即使我知道有一些字符串不包含我需要过滤掉的任何子字符串。
有人知道吗?
你很接近。您只需要像这样在否定前瞻中放置要排除的词:
^(?:(?!RSBO|RRABO|RSISTA0).)*$
它不会匹配任何包含 RSBO
、RRABO
或 RSISTA0
的单词,但会匹配任何其他文本。
^((?!RSBO)(?!RSISTA0)(?!RRABO).)*$
我相信这可以解决问题。在 regex101 上测试成功。可能效率低下,因为它会向前看每个角色,但我找不到解决方法。
编辑:我认为不需要一开始就积极展望未来,所以我将其从我的原始答案中删除。
我正在尝试在 Regex 中进行 NOT LIKE Condition1 OR Condition2 OR Condition3 等价。我想找到 not 包含任何子字符串 RSBO,RRABO,RSISTA0
从这个线程 here 我得出结论,可以编写 ^((?!RSISTA0).)*$
来查找所有不包含短语 RSISTA0
所以对于我的要求,当我必须满足三个条件时,我尝试了:
^((?!RSBO).)*$|^((?!RRABO).)*)$|^((?!RSISTA0).)*$
,但后来我认为 |
操作可能应该是 AND
等价。为此,我发现可以模仿 AND
操作 here
这给了我解决方案:
(?=^((?!RSBO).)*$)(?=^((?!RRABO).)*)$(?=^((?!RSISTA0).)*$)
然而,这导致我根本 return 任何字符串,即使我知道有一些字符串不包含我需要过滤掉的任何子字符串。
有人知道吗?
你很接近。您只需要像这样在否定前瞻中放置要排除的词:
^(?:(?!RSBO|RRABO|RSISTA0).)*$
它不会匹配任何包含 RSBO
、RRABO
或 RSISTA0
的单词,但会匹配任何其他文本。
^((?!RSBO)(?!RSISTA0)(?!RRABO).)*$
我相信这可以解决问题。在 regex101 上测试成功。可能效率低下,因为它会向前看每个角色,但我找不到解决方法。
编辑:我认为不需要一开始就积极展望未来,所以我将其从我的原始答案中删除。