Regex для Hello
является:
^((H)|.)?((e)|.)?((l)|.)?((l)|.)?((o)|.)?$
где даже индекс равен следующему (нечетного) элемента, этот символ соответствует.
Match 1
Full match 0-5 `Hello`
Group 1. 0-1 `H`
Group 2. 0-1 `H`
Group 3. 1-2 `e`
Group 4. 1-2 `e`
Group 5. 2-3 `l`
Group 6. 2-3 `l`
Group 7. 3-4 `l`
Group 8. 3-4 `l`
Group 9. 4-5 `o`
Group 10. 4-5 `o`
Full match 0-5 `Heddo`
Group 1. 0-1 `H`
Group 2. 0-1 `H`
Group 3. 1-2 `e`
Group 4. 1-2 `e`
Group 5. 2-5 `ddo`
Group 7. 5-5 ``
Group 9. 5-5 ``
или проверить нечетные элементы, Group2,4,6,8 != null
-> соответствует
Если REGEX и результаты являются приемлемыми, дайте мне знать, и написать сценарий для этого.
Создать Desire Regex:
var word = "Hello" ;
var myregex = '^' ;
for(i=0;i<word.length;i++){
\t myregex += '(('+word.substr(i,1)+')|.)?';
}
myregex += '$';
// Use Regex to find matched Characters and Differences:
var mymatch = "Heddo".match(new RegExp(myregex)) ;
mymatch.splice(0,1);
var mismatches = 0 ;
var chars = [];
for(i=1;i<mymatch.length;i+=2){
\t if(mymatch[i]!==undefined){
\t chars.push(mymatch[i]) ;
}else{
\t mismatches++
}
}
console.log(mismatches); //Count
Почему буква е слово Hello и текст рассматривается как разница? –
IMHO это не может быть сделано в одном регулярном выражении. Вы должны написать сценарий на своем любимом языке сценариев. – Toto
С регулярным выражением это не может быть сделано, ищет алгоритмы редактирования расстояния или выравнивания –