我正在试图弄清楚是否有一种简单的方法让特定的正则表达式给出正确的匹配,除了一个字符。 (如果重要的话,使用PHP工作)。
例如,对于'apples'模式,我不仅要找到“apples”的出现,还要找到“appxes”,“opples”,“applis”等等。
有没有什么好办法可以做到这一点?提前谢谢!
答案 0 :(得分:5)
使用levenshtein
函数代替正则表达式。 Here are the docs
示例echo levenshtein("abcd","abce")
打印出来:1
。
编辑:另请注意,此功能会比较不同长度的字符串,因此可能需要进行额外检查。请参阅下面的@Vulcan的评论。
答案 1 :(得分:2)
我不认为正则表达式是正确的工具。你可以这样做。
$temp = str_split ("apples");
$test = str_split ("appxes");
var_dump(array_diff($temp, $test));
<强>输出:强>
array(1) { [3]=> string(1) "l" } // 1 mismatch
^ // position ^ //letter at mismatch
答案 2 :(得分:1)
你的正则表达式字符串:
[A-z]pples|A[A-z]ples|Ap[A-z]les|Appl[A-z]es|Appl[A-z]s|Apple[A-z]
答案 3 :(得分:0)
你可以将字符串分成X个字母,并从欲望的preg匹配字中分割出preg_match X-1。