Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式拼写错误_Regex - Fatal编程技术网

Regex 正则表达式拼写错误

Regex 正则表达式拼写错误,regex,Regex,我有一个从数据库列表中创建的正则表达式,用于匹配游戏中建筑物类型的名称。问题在于拼写错误,有时那些在游戏中为团队编写指令的人会拼错一个建筑名称,很明显,正则表达式将不会识别它(即拼写“University”和“University”) 有没有关于让正则表达式匹配拼写错误的1或2个字母的建议 正则表达式是动态生成的,并在本地机器上运行,该机器能够处理更多的负载,因此,作为最后手段,我必须通过算法创建每个单词的版本,其中缺少一个字母,然后添加另一个字母 我正在使用PHP,但我希望这个问题的任何解决方

我有一个从数据库列表中创建的正则表达式,用于匹配游戏中建筑物类型的名称。问题在于拼写错误,有时那些在游戏中为团队编写指令的人会拼错一个建筑名称,很明显,正则表达式将不会识别它(即拼写“University”和“University”)

有没有关于让正则表达式匹配拼写错误的1或2个字母的建议

正则表达式是动态生成的,并在本地机器上运行,该机器能够处理更多的负载,因此,作为最后手段,我必须通过算法创建每个单词的版本,其中缺少一个字母,然后添加另一个字母


我正在使用PHP,但我希望这个问题的任何解决方案都不是特定于PHP的。

请允许我向您介绍,这是字符串之间差异的一种度量,即将一个字符串转换为另一个字符串所需的转换数

它也是

因此,我将输入文件按非单词字符分割,并测量每个单词与目标建筑列表之间的距离。如果距离低于某个阈值,则假定是拼写错误


我认为用这种方式匹配比为每个特殊情况编写正则表达式要幸运得多。

这可能有些过分,但谷歌的彼得·诺维格(Peter Norvig)已经写了一篇关于用Python编写拼写检查程序的文章。这绝对值得一读,可能适用于你的情况


在文章的最后,他还列出了该算法在各种其他语言中的实现。

谷歌通过查看以前的结果实现的“你的意思是什么”可能也会有所帮助:


在过去,我们有时使用Soundex()解决这些问题。

你很幸运;算法人员在正则表达式的近似匹配方面做了大量工作。这些工具中最古老的工具可能最初是在亚利桑那大学开发的,现在可以在一个很好的开源版本中使用。您只需告诉agrep您愿意容忍多少错误,然后它就匹配了。它还可以匹配除行之外的其他文本块。有到较新的GPLed版本的
agrep
的链接,还有一些特定于语言的库,用于正则表达式的近似匹配

soundex类似于Triptych提到的levenshtein函数。它是比较字符串的一种方法。见:


你也可以看看变音和类似的文字。我本来会把这句话写在评论里,但我还没有足够的代表来评论D

令人敬畏的代价^^^结合一些用于检查愚蠢字符的自定义代码这非常有效。谢谢:)我认为有一个严格的定义,使用某种算法来表示一个单词的发音。许多数据库都有一个SOUNDEX()函数来实现它。但严格来说,它可以是任何函数。写它们很有趣!=)在本网站上搜索“soundex”。它会不时出现。我也会重复10次。评论走开。