2011-10-07 89 views
2

即使使用跳過字母書寫此單詞,我也想查找單詞。正則表達式在單詞中查找跳過字母

例如,我想找到

引用

我想也覺得refrencesrefernces,但不參考

我寫這個正則表達式

(\brefe?r?e?n?c?e?s?\b) 

我想添加檢查匹配組的長度,該組應該大於8. 我只能使用正則表達式方法嗎?

+0

請加總是正則表達式問題的語言。在那裏有許多不同的正則表達式風格,並且可能存在針對您的特定語言的問題的其他解決方案。 – stema

回答

1

基本上你問的是(在僞代碼):

input == "references" or (levenshtein("references", input)==1 and length(input) == (lenght("references")-1)) 

Levenshtein distance被定義爲一個字符串轉換成另一個所需的編輯的最小數目,與允許的編輯操作被插入,刪除或替換單個字符。

由於您只想檢測字符被跳過的字符串,因此您必須在字符串長度上添加約束。

2

我不認爲正則表達式是一個很好的工具來找到類似的詞,就像你嘗試。如果兩個字母被交換,你在做什麼,比如「refernece」?你的正則表達式不會找到它。

而是要說明的正則表達式的方法來檢查的長度,你可以通過使用類似這樣的

(\b(?=.{8,}\b)refe?r?e?n?c?e?s?\b) 

(?=.{8,}\b)先行將檢查從第一\b下一個\b的長度爲做到這一點至少8個字符({8,}

看到它here on Regexr

相關問題