【发布时间】:2015-09-17 10:49:11
【问题描述】:
如何通过正则表达式进行“模糊搜索”?
例如,文本“hp laptop”可能与以下任何一项模糊匹配:
xxx hp laptop
hp xxx laptop
laptop xxxxx hp
【问题讨论】:
-
试试
\bhp\b.*?\blaptop\b|\blaptop\b.*?\bhp\b。但我猜它看起来不太好。
标签: regex fuzzy-search
如何通过正则表达式进行“模糊搜索”?
例如,文本“hp laptop”可能与以下任何一项模糊匹配:
xxx hp laptop
hp xxx laptop
laptop xxxxx hp
【问题讨论】:
\bhp\b.*?\blaptop\b|\blaptop\b.*?\bhp\b。但我猜它看起来不太好。
标签: regex fuzzy-search
【讨论】:
.*,否则将不会匹配任何输入(会有匹配项,但在第一个搜索词之前的每个字符对之间它们的宽度为零)
^ 不是必需的 - 它是隐含的(添加锚不会有任何区别)
我建议分别测试/\bhp\b/ig和/\blaptop\b/ig,如果第一个通过则测试第二个,这是最简单的方法。
这个/(\bhp\b).*(\blaptop\b)|(\blaptop\b).*(\bhp\b)/gi 可以很好地测试一个字符串中是否同时存在“hp”和“laptop”这两个词,但它不是很灵活。
需要使用单词边界\b,以避免'fleshpot'和hplaptop等匹配。
【讨论】: