特定の正規表現で1文字を除いて正しい一致を与える簡単な方法があるかどうかを調べようとしています。(問題がある場合はPHPで作業します)。
たとえば、パターン「りんご」の場合、「りんご」だけでなく、「appxes」、「opples」、「applis」などの出現も検索したいと考えています。
これを達成する良い方法はありますか?前もって感謝します!
levenshtein
正規表現の代わりに関数を使用します。ここにドキュメントがあります。
echo levenshtein("abcd","abce")
印刷例: 1
.
編集:この関数は長さの異なる文字列を比較するため、追加のチェックが必要になる可能性があることにも注意してください。以下の@Vulcanのコメントを参照してください。
正規表現はこれに適したツールではないと思います。代わりに、このようなことができます。
$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
あなたの正規表現文字列:
[A-z]pples|A[A-z]ples|Ap[A-z]les|Appl[A-z]es|Appl[A-z]s|Apple[A-z]
文字列を X 文字にこぼして、desire preg match ワードから preg match X-1 にすることができます。