2023-01-11 08:17:24

인터넷 상에서 노출되어 있는 전화번호를 수집하여 보이스 피싱 범죄 단체가 있다고 가정하겠습니다. 그렇다면 온갖 웹사이트를 크롤링해가면서, 텍스트 중에 전화번호의 형태를 갖춘 것만 저장하려고 노력하겠죠? 이런 경우에 정규식을 활용하면 조금 더 쉽게 전화번호만 찾아낼 수 있을 것입니다. (저는 보이스피싱범들이 실제로 어떻게 번호를 수집하는지 잘 모릅니다. 다만, 보이스피싱범들의 수법을 예상해보는 것입니다.)

 

파이썬의 re 패키지를 활용하면 정규식 문제를 쉽게 해결할 수 있습니다. 

 

import re

p = re.compile(r'\d+[-]\d+[-]\d+')

data = '''
안녕하세요. 맛집 블로거 맛있어맛있어입니다. 
제 연락처는 아래 있습니다.
김과장 010-1234-5678
홍길동 019-9999-9999
파이썬 정규식
031-1111-1111 서점
보이스 피싱 당하지 마세요.
02-1234-1234 떡볶이집
'''

phone_number_list = p.findall(data)
print(phone_number_list)

 

위 코드를 살펴보면 먼저 \d+[-]\d+[-]\d+라는 패턴을 만들고, 그 패턴에 부합하는 것만 찾아서 리스트에 담아줍니다. \d는 숫자를 뜻하고 +는 반복을 뜻합니다. 즉, 숫자의 반복 - 숫자의 반복 - 숫자의 반복 패턴을 갖는 것을 모두 찾으라는 뜻이 됩니다. 

 

 

관련 글

- [python] 문자열에서 한 자리 이상의 숫자들 추출하여 리스트로 만들기(정규식)