?
?는 '있거나 없거나'라는 뜻입니다. 따라서 -?는 "-가 있거나 없다"를 의미합니다.
regex = r'\d+-?\d+-?\d+'
search_target = '''Luke Skywarker 02-123-4567 luke@daum.net
다스베이더 070-9999-9999 darth_vader@gmail.com
princess leia 010 2454 3457 leia@gmail.com'''
# test
import re
result=re.findall(regex,search_target)
print(result)
모든 전화번호를 찾으려면
"010 2454 3457"과 같이 공백이 포함된 전화번호를 찾기 위해
[- ]?
로 표현할 수 있다.regex = r'\d+[- ]?\d+[- ]?\d+'
regex = r'\d+[- ]?\d+[- ]?\d+'
search_target = '''이상한 전화번호 0030589-5-95826
Luke Skywarker 02-123-4567 luke@daum.net
다스베이더 070-9999-9999 darth_vader@gmail.com
princess leia 010 2454 3457 leia@gmail.com'''
import re
result=re.findall(regex,search_target)
print(result)
→"0030589-5-95826"
과 같이 연결된 숫자가 너무 많은 문자열도 전화번호라고 인식
{숫자}는 "숫자번 반복한다"는 뜻
regex = r'\d{2}[- ]?\d{3}[- ]?\d{4}'
{숫자1, 숫자2}는 "숫자1부터 숫자2까지 반복한다"는 뜻
ex)\w{2,3}
: "문자가 2 ~ 3번 나온다"는 뜻
자리 수 | |
---|---|
처음 | 2 ~ 3자리 |
가운데 | 3 ~ 4자리 |
마지막 | 4자리 |
regex = r'\d{2,3}[- ]?\d{3,4}[- ]?\d{4}'