Regex 等价于XOR的正则表达式

Regex 等价于XOR的正则表达式,regex,xor,Regex,Xor,我正在尝试提出一个正则表达式,它可以接受下面的任何值的组合,除非不存在任何值。类似于XOR的东西,如果不存在,则不会接受其他任何东西,反之亦然 这就是我到目前为止所拥有的……但它并没有真正强制执行任何人的相互排他性: (无)|((FOO | BAR | SPAM)(?\ |?(FOO | BAR | SPAM))*) 有什么建议吗 谢谢大家! 您可以使用此正则表达式: ^(?!.*NONE)(?:.*(FOO|BAR|SPAM))* 它的开头是一个负前瞻:任何字符的任意数,后跟“NONE” 如

我正在尝试提出一个正则表达式,它可以接受下面的任何值的组合,除非不存在任何值。类似于XOR的东西,如果不存在,则不会接受其他任何东西,反之亦然

这就是我到目前为止所拥有的……但它并没有真正强制执行任何人的相互排他性:

(无)|((FOO | BAR | SPAM)(?\ |?(FOO | BAR | SPAM))*)

有什么建议吗


谢谢大家!

您可以使用此正则表达式:

^(?!.*NONE)(?:.*(FOO|BAR|SPAM))*
它的开头是一个
负前瞻
:任何字符的任意数,后跟
“NONE”

如果此测试失败(未找到),则匹配将失败。如果未找到任何
'NONE'
,它将继续移动并匹配:从字符串开始,任何字符的任何数字后跟您的任何单词。重复这一部分

编辑
使其本身不允许任何内容:

^NONE$|^(?!.*NONE)(?:.*(FOO|BAR|SPAM))*

现在,首先检查“NONE”是否单独存在(这是可以的)。

您使用哪个正则表达式程序。我正在使用这个正则表达式过滤Splunk仪表板上允许的内容。到目前为止,我一直在使用regex101.com检查我的正则表达式。请提供可能的字符串以供处理?目前尚不清楚“无”如何与其他价值相结合(如果可以的话)。在这种情况下,客户可以输入其产品的类别…因此产品类别可以是FOO | BAR或FOO | BAR | SPAM或SPAM,但一旦他们输入了无,这意味着它不属于任何类别,他们将不允许输入任何其他值。因此,任何人都不应该总是独自一人。我希望我说得更清楚一点。非常感谢。所以整个字符串要么是NONE,要么是FOO、BAR、SPAM中的一个?不,如果字符串中没有,它将失败。我如何更改它以使其本身不允许任何内容?明白了!非常感谢你!