我試圖返回並在設備中打印SIM卡的ICCID; SIM卡來自不同的供應商,因此具有不同的長度(19或20位數字)。因此,我正在尋找一個能夠提取ICCID的正則表達式(以不可知的方式直接圍繞它的非單詞字符)。使用正則表達式從字符串中提取ICCID
假設一個ICCID被指定爲19-20位是以「89」,我只是走了:
(89\d{17,18})
沿着這是我已經測試了最成功的模式(由於下面的原因拒絕了一些模式)。
在我是從提取它的字符串時,ICCID後面緊跟着一個回車,然後換行,而是針對與\r
終止它的一些測試,\n
,甚至\b
未能奏效(程序我使用的是一個內置的python,所以我懷疑這就是它用於正則表達式)。另外,簡單地使用(\d{19,20})
最終提取20位ICCID的最後19位數(作爲第三次和最後一次有效匹配)。基於同樣的原則,我原則上排除了(\d{19,20})?
,因爲我期望在找到前19位時完成。
所以我的問題是:我應該使用我選擇的模式,還是有一個更好的表達式(不使用非單詞字符來構造字符串),它將返回可變長度的最長子字符串數字串?
這實際上取決於你想要解析的文件/文本的格式。我建議你在像https://regex101.com/#python這樣的正規表達式測試器中「調整」你的表達式(使用「g」模式來模擬搜索) –
我不明白爲什麼只有'\ d {19,20}'匹配20個字符中的19個 - 量詞是貪婪的。 –
@WiktorStribiżew我懷疑它匹配了前19位數字,然後是所有20位數字,然後是最後19位數字。因爲這是最後一場比賽,這是它返回的那場比賽。 – Myles