假設我有兩個字符串,Hello
和heddo
,如何創建正則表達式來匹配它們之間的差異?正則表達式:兩個字符串之間的計數差異
例如,在我的情況下,有三點不同,H
現在是小寫h
,並兩次l
現在d
。
或者Hello
和Text
有三個差異,T
X
和T
謝謝
假設我有兩個字符串,Hello
和heddo
,如何創建正則表達式來匹配它們之間的差異?正則表達式:兩個字符串之間的計數差異
例如,在我的情況下,有三點不同,H
現在是小寫h
,並兩次l
現在d
。
或者Hello
和Text
有三個差異,T
X
和T
謝謝
這絕對不是你應該使用的正則表達式做的(除非你有一個很好的理由是什麼?)。例如,這裏是一個Python解決方案。
def count_diff(a,b):
return sum(x!=y for x,y in zip(a,b))
print(count_diff('Hello', 'hebdo'))
你可以試試here。
什麼是.NET Linq等價物? –
@ LukeTO'Brien不知道。也許是一個新問題的話題。 –
這似乎工作https://dotnetfiddle.net/CplyFr - 我會接受你的答案 –
正則表達式爲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
- >匹配
如果這個表達式和結果是可以接受的,讓我知道,這個寫劇本。
創建慾望正則表達式:
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和文本的字母E被認爲是區別? –
恕我直言,這不能在一個正則表達式中完成。你必須用你喜歡的腳本語言編寫腳本。 – Toto
使用正則表達式無法完成搜索編輯距離或對齊算法 –