我从数据库列表中创建了一个正则表达式,以匹配游戏中建筑物类型的名称。问题是错别字,有时候在游戏中为他们的团队写指令的人会拼错建筑物的名称,而正则表达式显然不会选择它(即拼写“大学”和“大学”)。
关于使正则表达式匹配1个或2个字母的拼写有任何建议吗?
regex是动态生成的,并在能够处理更多负载的本地计算机上运行,因此,我不得不采用算法来创建每个单词的版本,每个单词的字母先丢失,然后再添加字母。
我正在使用PHP,但希望该问题的任何解决方案都不是特定于PHP的。
最佳答案
请允许我向您介绍Levenshtein Distance,它是字符串之间的差异的度量,它是将一个字符串转换为另一个字符串所需的转换次数。
它也是built into PHP。
因此,我将输入文件除以非单词字符,然后测量每个单词与建筑物目标列表之间的距离。如果距离低于某个阈值,则假定它拼写错误。
我认为,与为每种特殊情况尝试制作正则表达式相比,用这种方式进行匹配的运气要好得多。
关于正则表达式拼写错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/392234/