通过正则表达式进行模糊匹配

use*_*849 8 regex fuzzy-search

如何通过正则表达式进行“模糊搜索”?

例如,文本“hplaptop”可能是以下任意一项的模糊匹配:

xxx hp laptop
hp xxx laptop
laptop xxxxx hp
Run Code Online (Sandbox Code Playgroud)

Boh*_*ian 5

对每个单词使用前瞻:

(?=.*\bhp\b)(?=.*\blaptop\b).*
Run Code Online (Sandbox Code Playgroud)

\b表示“单词边界”,因此"bhp""laptops"不会匹配。

请参阅现场演示

前瞻的形式为(?=...),断言(但不消耗)输入与正则表达式(...本例中的点)匹配。由于它不消耗输入,因此在计算指针时指针不会前进,因此您可以在同一点进行多个前瞻。

阅读本文以获得更详细的解释。

使用搜索查询中的单词数量尽可能多的前瞻。