我需要一个可以匹配不正确AND
/OR
逻辑语句的正则表达式,但如果它们在引号中则不能,例如:
不应在以下位置找到匹配项:
MAR AND SATURN
MAR OR SATURN
"MAR AND SATURN"
AND
如果或OR
两侧至少有 1 个空白字符加上 1 个非空白字符并且这些字符不是由OR
or组成,则不会有任何匹配AND
。因此,例如 ..R AND S.. 不应该匹配但(OR) OR (OR)
或(AND) AND (AND)
应该匹配。
火柴
MARS AND SATURN [AND]
MARS [OR]
MARS [ OR ]
[AND] AND [AND]
[OR] [AND]
[OR] [AND]
[AND] [OR]
[ AND ] [ OR ]
AND
您会注意到一些示例在or运算符之前、之后或两侧包含空格OR
,这些也需要匹配。
我正在使用 .NET 框架,这就是我想出的有效方法。但是,这似乎太复杂了!必须有一种方法来简化它。
(?!.*\"")(?<!(?:\bAND\b\s|\bOR\b\s))(?:\b(?:AND|OR)\b)(?=\s\b(?:AND|OR)\b)|(?<=\bAND\b\s|\bOR\b\s)(?:\b(?:AND|OR)\b)(?!\s\b(?:AND|OR)\b)|^\b(?:AND|OR)\b|(?:AND\s?|OR\s?)$|(?<=\()\s?(?:\bAND\b|\bOR\b)|(?<=\()(?:\bOR|\bAND)(?=\))|(?:\bOR|\bAND)(?=\))(?!.*\"")