如果我在匹配中寻找锚词,例如句子中的单词颜色如果该句子中有颜色,但在OR之后匹配正常:
-
颜色为红色
-
红色
我可以在一个或两个正则表达式中执行此操作,我需要两个:
(Color (Red|Blue|Orange))
https://regex101.com/r/iT4nN6/1
((Red|Blue|Orange) Color)
如果我在匹配中寻找锚词,例如句子中的单词颜色如果该句子中有颜色,但在OR之后匹配正常:
颜色为红色
红色
我可以在一个或两个正则表达式中执行此操作,我需要两个:
(Color (Red|Blue|Orange))
https://regex101.com/r/iT4nN6/1
((Red|Blue|Orange) Color)
2 回答
在PHP PCRE正则表达式语法中,您可以利用
(?J)
修饰符,该修饰符允许对不同的捕获组使用相同的名称:见the regex demo
PHP demo:
结果:
你可以做一个正则表达式:
((Red|Orange|Blue) Color|Color (Red|Orange|Blue)
如果事情变得更复杂,那么维护起来会更困难;你需要在两个地方更新颜色列表 . 根据您的具体情况,单独执行这两个组件可能更容易,只在另一个组件的结果中查找一个组件 .