[英]Partial Matching with a regular expression
我正在構建一個系統來識別基於模式的詞,例如車牌和財政代碼。 由於源自 OCR 系統,我的輸入字符串有時並不完美,因此我正在尋找一種“放松”正則表達式的解決方案。
例如正則表達式:
^(([a-zA-Z]{2}\d{3}[a-zA-Z]{2})|(([a-zA-Z]{2}|roma)(\d{5}|\d{6})))$
如果我有(意大利)車牌 AB123CD 並且我嘗試匹配我的正則表達式它可以工作但如果我的輸入稍微損壞例如 ABi23CD(OCR 系統將“1”讀作“i”)正則表達式顯然不匹配.
有沒有辦法允許在正則表達式匹配中出現一些錯誤? 在該示例中,第二個字符串將匹配正則表達式,將 i 替換為一個數字,因此它匹配但允許一個錯誤。 謝謝!
OCR 錯誤很難預測,但是如果您分析您擁有的輸出,您可能會發現規律,例如i
識別而不是1
等。
在這種情況下,您可以使用字符類: \\d
匹配一個數字, [i\\d]
匹配i
或一個數字(但在您的情況下, i
也是一個數字,您可以稍后用1
替換i
)。
所以,你的模式看起來像
^([a-zA-Z]{2}[\di]{3}[a-zA-Z]{2}|([a-zA-Z]{2}|roma)[\di]{5,6})$
注意(\\d{5}|\\d{6})
可以縮寫為\\d{5,6}
。
找到后,您可以向[\\di]
添加更多字符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.