2017-05-18 3 views
0

전화 번호를 파싱하는 비교적 간단한 함수를 파이썬에서 작성하려고합니다. 현재 RegEx가 문제를 일으키고 있습니다. 즉, 앞에 오는 0은 생략하고, 계속 유지하려고합니다.RegEx 선행 0을 생략합니다.

어떻게하면 선행 0이 유지되도록 수정할 수 있습니까? 패턴은 또한 마지막에 4 개의 항목을 유지하는데, 이는 바람직하지 않습니다. 마지막 블록의 최대 세 자리 숫자가 필요합니다. - 그것은 작동합니다

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

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

+2

'0'을 제거하지 않으려면 'int'를 사용하지 마십시오. 이것은 정규식과는 아무 관련이 없으며, 도착하기 전에 사라졌습니다. – jonrsharpe

+1

정규 표현식은 선행 0에 대해 아무 것도 수행하지 않습니다. '% d "% int (...)'는 선행 0을 버립니다. – user2357112

+0

알았어요. 마지막 4 블록은 어떨까요? 오른쪽의 마지막 블록이 최대 3 자릿수인지 확인하려면 어떻게해야합니까? – MadPhysicist

답변

0

이 시도 : 내가 좋아하는 것이 무엇

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

이 같은 것입니다. 여기에 demo

관련 문제