我正在尝试使用 Regex 根据以下条件返回匹配项:
包含特殊字符的单词不匹配。
关键字 AND 和 OR 不匹配。
一个空格匹配的单词和此后的任何单词,例如 -
'lorem Ipsum 只是打印的虚拟和文本'
以上应返回以下匹配项:
我已经能够让正则表达式匹配每个单词,除了正确但没有捕获空格的关键字。我采用了两种类似的方法,但结果略有不同:
此正则表达式匹配单词及其空格,但该模式不会延续到下一个单词。
(\w*[^OR|^AND] [^OR|^AND]\w*)
表达式非常接近,但它没有返回我上面提到的所有想要的匹配项,我错过了什么?
在您的模式中,您使用了一个否定字符类[^OR|^AND]
,该类将不匹配任何列出的字符,因此它将匹配任何字符,除了ADNOR|^
如果支持前瞻和捕获组,您可以使用组合正前瞻来断言右侧的内容是 2 个单词,并使用负前瞻断言直接在右侧的内容不是OR
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
匹配AND / OR,然后词边界,1+字字符和词边界)
关闭第一个捕获组)
关闭正向前瞻本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句