0
単語のパターンをある程度の誤差マージンで一致させることは可能ですか? たとえば、「Tike」、「Make」、「Bake」、「Tame」という単語は、「Take」という単語のパターンに1つのスペルの間違いがある場合に適しています。一部の単語に一致する正規表現
単語のパターンをある程度の誤差マージンで一致させることは可能ですか? たとえば、「Tike」、「Make」、「Bake」、「Tame」という単語は、「Take」という単語のパターンに1つのスペルの間違いがある場合に適しています。一部の単語に一致する正規表現
正規表現は、この問題に非常にスケーラブルなソリューションではありませんが、これは本当にあなたがしたいすべてのであれば、その後、複数の選択肢(|
で区切る)で正規表現を使用し、1つの文字で各ドット(.
)に置き換えワイルドカード。
function makeMatcher(str) {
const regexp = [...str].map((chr, i) =>
`${str.slice(0, i)}.${str.slice(i+1)}`).join('|');
console.log("regexp is", regexp);
return new RegExp(regexp, "i");
}
function test(s) { console.log(s, matcher.test(s) ? "matches" : "does not match"); }
const matcher = makeMatcher("Mike");
["Mike", "Mila", "Mika", "John"].forEach(test);
あなたの問題は、あなたが一つ以上の代替品(お使いの場合)の存在下で一致している時に「ファジー(または近似)文字列マッチング」と呼ばれる一般的な問題のサブセットであり、 、挿入または削除された文字、または転置された文字。この一般的な問題は確かに正規表現では解決できないでしょう。しかし、これを行うライブラリがたくさんあります。あなたはhttps://code.google.com/archive/p/google-diff-match-patch/を見て始めましょう。
正規表現を使用する場合は、欲しい、したくない、または気にしないでください。 –