2017-05-18 78 views
0

我正試圖在解析電話號碼的Python中編寫一個相對簡單的函數。目前,RegEx正在給我帶來麻煩。也就是說,它省略了我希望保留的前導零。RegEx省略前導零

我該如何修改它以保持前導零?該模式最終還保留了4個項目,這是不受歡迎的。最後一個塊最多需要三位數字。

phone_number = re.sub("(\d{3})(?=(\d)+(?!\d))", r"\1-", "%d" % int(clean_number[:-1])) + clean_number[-1] 

我想什麼是這樣的:

Input: 00112223344 Output: 001-122-233-44

+2

如果你不想去掉前導零,不要使用int。這與正則表達式無關,它們在它到達之前就已經消失了。 – jonrsharpe

+1

正則表達式對前導零不做任何事情。 '「%d」%int(...)'丟棄前導零。 – user2357112

+0

明白了。最後4塊的情況如何?如何確保右側的最後一個塊最多隻有3位數? – MadPhysicist

回答

0

試試這個 -

phone_number = re.sub(r'(\d{3})', r'\1-', phone_number) 

它應該工作。 這裏是demo