RegExp在单词中查找跳过字母

时间:2011-10-07 07:45:05

标签: regex

我想找到这个词,即使这个单词也是用跳过的字母写的。

例如我想找

引用

我还希望找到引用引用,但引用

我写这个Regexp

(\brefe?r?e?n?c?e?s?\b)

我想添加检查匹配组的长度,这个组应该比8更好。 我只能用regexp方法吗?

3 个答案:

答案 0 :(得分:2)

我认为正则表达式不是一个很好的工具,可以找到像你一样尝试的类似单词。如果交换两个字母,你在做什么,比如“refernece”?你的正则表达式找不到它。

但要显示检查长度的正则表达方式,你可以通过使用这样的前瞻来做到这一点

(\b(?=.{8,}\b)refe?r?e?n?c?e?s?\b)

(?=.{8,}\b)会检查从第一个\b到下一个\b的长度是否至少为8个字符({8,}

here on Regexr

答案 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的字符串,因此必须在字符串长度上添加约束。