我一直在使用[0-9]{9,12}
來表示數字字符串的長度爲9或12個字符。不過,我現在意識到它將匹配長度爲10或11的輸入字符串。所以我出來與天真:在正則表達式中匹配兩個不同重複的同一個字符類是否更好?
([0-9]{9} | [0-9]{12})
是否有一個更簡潔的正則表達式來表示這?
我一直在使用[0-9]{9,12}
來表示數字字符串的長度爲9或12個字符。不過,我現在意識到它將匹配長度爲10或11的輸入字符串。所以我出來與天真:在正則表達式中匹配兩個不同重複的同一個字符類是否更好?
([0-9]{9} | [0-9]{12})
是否有一個更簡潔的正則表達式來表示這?
您可以通過使用
[0-9]{9}([0-9]{3})?
但在我看來救一個字符用自己的方式更好,因爲它更清晰地傳達你的意圖。正則表達式很難讀取。您可以使用\d
而不是[0-9]
。
(編輯:我首先想到的,你可以刪除括號周圍[0-9]{3}
但你不能;問號將被忽略,所以你只能救一個字符,而不是三個。)
(編輯2:還需要錨定的正則表達式與^
和$
(或\b
)或re.match()
也將在1234567890
匹配123456789
)
你可以這樣做:
[0-9]{9}[0-9]{3}?
沒有太大的不同是它...
+1用於提高可讀性 – tobyodavies
+1同樣的答案! – Bohemian