即使使用跳過字母書寫此單詞,我也想查找單詞。正則表達式在單詞中查找跳過字母
例如,我想找到
引用
我想也覺得refrences或refernces,但不參考
我寫這個正則表達式
(\brefe?r?e?n?c?e?s?\b)
我想添加檢查匹配組的長度,該組應該大於8. 我只能使用正則表達式方法嗎?
即使使用跳過字母書寫此單詞,我也想查找單詞。正則表達式在單詞中查找跳過字母
例如,我想找到
引用
我想也覺得refrences或refernces,但不參考
我寫這個正則表達式
(\brefe?r?e?n?c?e?s?\b)
我想添加檢查匹配組的長度,該組應該大於8. 我只能使用正則表達式方法嗎?
我認爲使用正則表達式不是一個好主意。你需要更多的權力功能。例如,如果你使用php編程,你需要像similar_text
這樣的函數。更多細節在這裏:http://www.php.net/manual/en/function.similar-text.php
基本上你問的是(在僞代碼):
input == "references" or (levenshtein("references", input)==1 and length(input) == (lenght("references")-1))
Levenshtein distance被定義爲一個字符串轉換成另一個所需的編輯的最小數目,與允許的編輯操作被插入,刪除或替換單個字符。
由於您只想檢測字符被跳過的字符串,因此您必須在字符串長度上添加約束。
我不認爲正則表達式是一個很好的工具來找到類似的詞,就像你嘗試。如果兩個字母被交換,你在做什麼,比如「refernece」?你的正則表達式不會找到它。
而是要說明的正則表達式的方法來檢查的長度,你可以通過使用類似這樣的
(\b(?=.{8,}\b)refe?r?e?n?c?e?s?\b)
的(?=.{8,}\b)
先行將檢查從第一\b
下一個\b
的長度爲做到這一點至少8個字符({8,}
)
請加總是正則表達式問題的語言。在那裏有許多不同的正則表達式風格,並且可能存在針對您的特定語言的問題的其他解決方案。 – stema