5

我必须编写一些模式,这些模式将在用户输入时通过正则表达式用于匹配目的:

string pattern = "^.*overview\ of\ sales.*customer\ information.*$";
string input = "overview of sales with customer information";

有没有办法删除正则表达式中的词序?所以

string pattern = "^.*overview\ of\ sales.*customer\ information.*$";

还将匹配:

string input = "customer information with overview of sales";

这可能可以通过以相反的顺序编写每个模式来完成,但由于模式的数量很少,并且会随着时间和 * 的数量而增长。这往往是一种乏味的方式,所以请指导这件事。

4

1 回答 1

14

你会想要使用积极的前瞻 ?=.*

[Positive lookahead]q(?=u)匹配后跟 au 的 aq,而不使 u 成为匹配的一部分。正向前瞻结构是一对括号,左括号后跟一个问号和一个等号。

在这种情况下,可以使用正向前瞻来以任何顺序匹配一组模式,如下所示:

(?=.*customer)(?=.*information)(?=.*with)(?=.*overview)(?=.*of)(?=.*sales)

正则表达式可视化

Debuggex 演示在这里

要修改,只需添加、编辑或删除您认为合适的单词。

编辑

在这里找到一个解释相同概念的问题:https ://stackoverflow.com/a/3533526/2081889

于 2013-11-11T00:07:26.927 回答