我正在尝试使用正则表达式根据以下条件返回匹配项:
一个空格匹配的单词以及其后的任何单词,例如-
“ lorem吸管只是伪造的AND印刷文字”
以上内容应返回以下匹配项:
我已经能够使Regex匹配每个单词,除了正确的关键字外,它不能捕获空格。我采用了两种相似的方法,但结果略有不同:
此正则表达式匹配单词及其空格,但是模式不会继续到下一个单词。
(\w*[^OR|^AND] [^OR|^AND]\w*)
表达式非常接近,但是它没有返回如上所述的所有所需匹配项,我缺少什么?
答案 0 :(得分:1)
在模式中,您使用否定的字符类[^OR|^AND]
,该字符类与所列的任何字符都不匹配,因此它将与除ADNOR|^
之外的所有字符相匹配
如果支持lookaheads和capturing groups,则可以结合使用正向查找来断言右边是2个单词,并使用负向查找来断言直接在右边是2个单词。既不是OR
也不是AND
。
要匹配单词,您可以使用\w+
匹配单词字符
您的比赛将在第一个捕获组中。
(?=(\b(?!(?:AND|OR)\b)\w+ (?!(?:AND|OR)\b)\w+\b))
说明
(?=
正向前进,断言右边直接是
(
捕获组1
\b(?!(?:AND|OR)\b)
单词边界并断言直接在右侧的内容不是AND / OR \w+
匹配1个以上的字符,后跟一个空格(?!
负向查找,断言直接在右边的不是
(?:AND|OR)\b)\w+\b
匹配“与/或”,然后匹配单词边界,1个以上的字符字符和单词边界)
关闭第一个捕获组)
积极回望