我想找到这个词,即使这个单词也是用跳过的字母写的。
例如我想找
引用
我还希望找到引用或引用,但引用
我写这个Regexp
(\brefe?r?e?n?c?e?s?\b)
我想添加检查匹配组的长度,这个组应该比8更好。 我只能用regexp方法吗?
答案 0 :(得分:2)
我认为正则表达式不是一个很好的工具,可以找到像你一样尝试的类似单词。如果交换两个字母,你在做什么,比如“refernece”?你的正则表达式找不到它。
但要显示检查长度的正则表达方式,你可以通过使用这样的前瞻来做到这一点
(\b(?=.{8,}\b)refe?r?e?n?c?e?s?\b)
(?=.{8,}\b)
会检查从第一个\b
到下一个\b
的长度是否至少为8个字符({8,}
)
答案 1 :(得分:1)
我认为使用正则表达式并不是一个好主意。您需要更多电源功能。例如,如果您使用php进行编程,则需要similar_text
之类的函数。更多详情:http://www.php.net/manual/en/function.similar-text.php
答案 2 :(得分:1)
基本上你要问(伪代码):
input == "references" or (levenshtein("references", input)==1 and length(input) == (lenght("references")-1))
Levenshtein distance定义为将一个字符串转换为另一个字符串所需的最小编辑次数,允许的编辑操作是插入,删除或替换单个字符。
由于您只想检测跳过char的字符串,因此必须在字符串长度上添加约束。