我正在尝试编写一个正则表达式,只要该单词不是AND
, OR
, ,它就会找到后跟空格的任何单词NOT
。
在搜索类似问题后,我尝试了否定前瞻,这是我当前的正则表达式:(?!AND|OR|NOT).*?\\s
如果我用“AND”尝试这个,我会在“ND”上得到匹配。如果我尝试使用“OR”,我会得到“R”,如果我尝试使用“NOT”,我会得到“OT”。
任何人都可以帮忙吗?
我正在尝试编写一个正则表达式,只要该单词不是AND
, OR
, ,它就会找到后跟空格的任何单词NOT
。
在搜索类似问题后,我尝试了否定前瞻,这是我当前的正则表达式:(?!AND|OR|NOT).*?\\s
如果我用“AND”尝试这个,我会在“ND”上得到匹配。如果我尝试使用“OR”,我会得到“R”,如果我尝试使用“NOT”,我会得到“OT”。
任何人都可以帮忙吗?
试试这个模式:
\\b(?!(?:AND|OR|NOT)\\b)[a-zA-Z]+\\s
我添加了一些单词边界 (\b) 并使用了字符类[a-zA-Z]
(您可以在不区分大小写的上下文中将其替换为 [az])以避免惰性量词。
或更高性能(不区分大小写):
\\b(?>(?>[b-mp-z])|(?!(?>and|or|not)\\b)[aon])(?>[a-z]*)\\s
如果你想匹配:
(?<=(\"?)\\b)(?!(?:AND|OR|NOT)\\b)[a-zA-Z]+(?=\\1(?:\\s|$))
(\"?)(?<=\\b)(?!(?:AND|OR|NOT)\\b)[a-zA-Z]+\\1(?=\\s|$)
(?<=(\\()\\b)(?!(?:AND|OR|NOT)\\b)[a-zA-Z]+(?=(?(1)\\)|(?:\\s|$)))
(?<=(\\()?(\"?)\\b)(?!(?:AND|OR|NOT)\\b)[a-zA-Z]+(?=(?(1)\\)|\\2(?:\\s|$)))
\\b(?!(?:AND|OR|NOT)\\b)[a-zA-Z]+\\b
嗯,我不能 100% 确定我是否理解正确,但你能试试这个,看看它是否是你要找的吗?
(?<=\bAND|\bOR|\bNOT)\s.*
这将XYZ
在您的评论中匹配(尽管使用前面的白色字符)。我在中间加了一个词后在这里测试了它。
编辑:如果右边没有更多字符并且您需要最后三个字符,则可以使用以下任一字符:
\w+$
或者:
[^\s]+$