首页 > 解决方案 > 如何将正则表达式中的组与非捕获组组合以具有所有可选

问题描述

我想要实现的目标:我想将用户输入的句子与我的模板进行匹配,并查看哪个模板匹配得更好(模板中尽可能多的组)。

我正在构建以解决示例的正则表达式

^(\bMyCompany1\b)?(?:.+)?\s(\bestablishes\b)?(?:.+)?\s(\bAnotherCompany\b)?(?:.+)?$

例句

这个正则表达式只是一个模板的一个例子。每个模板我将有 1 个正则表达式(动态构建)。就像“User1 向 User2 发送了请求”、“Company1 向 Company2 借了 111 美元”一样,我的想法是定义模板的每个部分并查看我匹配了多少部分。例如,在我的示例中: - 我希望列表中的某些公司名称(MyCompany 或 MyCompany1)或非捕获组忽略其余部分(可能用户打错字或只是输入但尚未完成) - 我希望组的顺序相同到那里

你能解释一下我在正则表达式中做错了什么吗?通过使用正则表达式来实现这一点是否正确?

标签: regex

解决方案


你能试试下面的正则表达式吗

^(\bMyCompany1\b)?\s+(\bestablishes\b)?\s+(\bAnotherCompany\b)?(?:.+)?$

希望能帮助到你


推荐阅读