我正在寻找返回的正则表达式:
输入:AND OR NOT
预期输出:
group 0:"AND"
group 1:"OR"
group 2:"NOT"
输入:ANDOR NOT
预期输出:
group 0:"NOT"
简而言之,仅当用space
分隔时,我的正则表达式才应返回包含逻辑表达式的组。
花了3个小时,问了4位同事,我仍然不知道该怎么做。
我的方法:
{ regex: /( AND )|( OR )|( NOT )/, token: "logical" }
它不起作用,因为对于AND NOT
,我没有得到预期的结果。
{ regex: /(AND)|(OR)|(NOT)/, token: "logical" },
它不起作用,因为对于ANDNOT
,我没有得到预期的结果。
{ regex: /(?:(AND)|(OR)|(NOT))/, token: "logical" },
它不起作用,因为对于ANDOR
,我没有得到预期的结果。
请帮助:-)
答案 0 :(得分:1)
此正则表达式似乎完全符合您在帖子中所描述的需求,
\b(AND|NOT)\b(?:\s(OR)\s(NOT))?
正则表达式说明:
\b(AND|NOT)\b
-确保第一组匹配AND
或NOT
作为整个单词,因此被单词边界包围(?:
-开始非分组的可选组\s(OR)\s(NOT)
-匹配空白和文字OR
并将其放入组2,然后再次匹配空白和文字NOT
并将其放入组3 )?
-非捕获组已关闭,并且?
使该组成为可选组。 让我知道这是否是您想要的。
答案 1 :(得分:1)