【发布时间】:2010-12-15 19:02:54
【问题描述】:
我想知道是否有某种方法可以在 PHP 中进行模糊字符串匹配。在长字符串中查找一个单词,即使拼写错误也能找到可能的匹配项;如果由于 OCR 错误而将其关闭一个字符,就会找到它。
我在想一个正则表达式生成器可能能够做到这一点。所以给定一个“疯狂”的输入,它会生成这个正则表达式:
.*((crazy)|(.+razy)|(c.+azy)|cr.+zy)|(cra.+y)|(craz.+)).*
然后它将返回该单词的所有匹配项或该单词的变体。
如何构建生成器: 我可能会将搜索字符串/单词拆分为一个字符数组并构建正则表达式,对新创建的数组执行 foreach 用“.+”替换键值(字符串中字母的位置)。
这是进行模糊文本搜索的好方法还是有更好的方法?某种字符串比较如何根据它的接近程度给我一个分数?我正在尝试查看某些转换错误的 OCR 文本是否包含简短的单词。
【问题讨论】:
-
您的正则表达式错误 - 将
+替换为. -
感谢您的提示,用 .+ 解决了这个问题
-
c.+azy将匹配calksjdazy-c后跟一个或多个字符,后跟azy。对于单个字符,使用c.azy
标签: php regex ocr fuzzy-search fuzzy-comparison