我正在尝试在应用程序中使用REGEX在文档中找到两个单独的文本组。示例:
(facility services|MAFS|MFA|facility|facilities)
(agreement|lease)
我只想标识在两组文本中都与一个单词匹配的文档,例如facility
和agreement
。我该如何在REGEX中写出来?
答案 0 :(得分:1)
如果您只想查找两个匹配项,则可以使用交替顺序以任何一个顺序搜索它们。
((MAFS|MFA|facility|facilities)[\s\S]*(agreement|lease))|((agreement|lease)[\s\S]*(MAFS|MFA|facility|facilities))
如果存在更多模式,则由于组合爆炸而无法很好地扩展,因此提前解决是解决方案。参见Regular Expressions: Is there an AND operator?
答案 1 :(得分:0)
这通常被称为乱序匹配。
如果您遇到两套以上的情况,那么唯一的
有效的方法是使用执行条件构造的引擎。
但是,这是您的2套(?:.*?\b(?:(?(1)(?!))(facility|MAFS|MFA|facilities)|(?(2)(?!))(agreement|lease))\b){2}
可读版本
(?:
.*?
\b
(?:
(?(1)
(?!)
)
( # (1 start)
facility
| MAFS
| MFA
| facilities
) # (1 end)
|
(?(2)
(?!)
)
( agreement | lease ) # (2)
)
\b
){2}