이번 포스트에서는 파이썬에서 사용할 수 있는 정규표현식 라이브러리인
re 라이브러리에 대해서 알아보겠습니다.
1) 정규표현식이란?
정규표현식은 영어로 regualr expressions를 말하는데 복잡한 문자열을 처리할 때 사용합니다.
파이썬 외에도 다릉 언어에서도 사용하며 문자열을 처리해야 하는 곳에서 다양하게 활용가능합니다.
2) re 라이브러리 사용예제
이제 re 라이브러리의 사용예제를 알아보겠습니다.
import re
text = "1. 동해물과 백두산이 마르고 닳도록 하느님이 보우하사 우리나라 만세 무궁화 삼천리 화려 강산 대한 사람 대한으로 길이 보전하세 2. 남산 위에 저 소나무 철갑을 두른 듯 바람 서리 불변함은 우리 기상일세 무궁화 삼천리 화려 강산 대한 사람 대한으로 길이 보전하세3. 가을 하늘 공활한데 높고 구름 없이밝은 달은 우리 가슴 일편단심일세무궁화 삼천리 화려 강산대한 사람 대한으로 길이 보전하세4. 이 기상과 이 맘으로 충성을 다하여괴로우나 즐거우나 나라 사랑하세무궁화 삼천리 화려 강산대한 사람 대한으로 길이 보전하세"
words = re.findall(r'\w+', text)
print(words)
info = '''고길동 27 010-1111-2222 gildong@gmail.com
둘리 29 010-2222-7777 dooly@yahoo.com'''
regex = r'0\d{1,2}[-]?\d{3,4}[-]?\d{3,4}'
phone = re.findall(regex, info)
print("\n".join(phone))
rInstance = re.compile(r'0\d{1,2}[-]?\d{3,4}[-]?\d{3,4}')
print(rInstance.sub("***-****-****", info))
사용할 문자열은 애국가의 1절부터 4절까지의 가사와
이름, 나이, 전화번호, 이메일주소를 적어놓은 정보의 문자열입니다.
제일먼저 findall 함수를 살펴보겠습니다.
findall 함수는 정규표현식을 인자로 받을 수 있는데,
예제에서 사용한 정규표현식인 '\w+'는 단어의 추출을 의미하는 정규표현식입니다.
이를 text 문자열에 사용한 결과를 보겠습니다.
단어별로 쪼개져 리스트 형태로 반환된 것을 확인할 수 있습니다.
다음으로는 정보의 문자열인 info를 한번 다뤄보겠습니다.
regex는 위의 '\w+'와 마찬가지로 정규표현식입니다.
구성은 다음과 같습니다.
- 0\d{1,2} : 0으로 시작하는 숫자로 된 자릿수가 1~2인 문자열
- [-]?\d{3,4} : 중간에 -(하이폰)이 있는 숫자로 된 자릿수가 3~4인 문자열
위의 정규표현식을 findall 함수로 info 문자열에 적용해보겠습니다.
그리고 findall 함수로 리턴된 값을 join을 사용해 \n으로 묶어보겠습니다.
전화번호가 정규표현식에 맞춰 잘 추출된 것을 확인할 수 있습니다.
마지막으로는 compile을 통해 정규식을 하나의 객체로 리턴하고 이를 통해 마스킹을 해보겠습니다.
위에서 전화번호 추출에 사용한 정규표현식을 rInstance라는 이름의 변수로 저장했습니다.
이때 sub 메소드를 사용하여 마스킹을 진행하겠습니다.
sub 메소드는 문자열을 바꾸는 메소드입니다. 인자는 순서대로 패턴과 바꿀 문자열을 의미합니다.
실행결과를 한번 살펴보겠습니다.
info 문자열에서 의도한 대로 전화번호가 잘 마스킹된 것을 확인할 수 있습니다.
'Python' 카테고리의 다른 글
파이썬의 리스트 (0) | 2024.11.23 |
---|---|
collections 라이브러리의 Counter 메소드 (0) | 2024.11.22 |
txtwrap 라이브러리 (1) | 2024.11.20 |
문자열 처리 (1) | 2024.11.19 |
외부 라이브러리 (1) | 2024.11.18 |