728x90
[Python] 정규 표현식
re
: 정규 표현식(Regular Expression)을 지원하는 파이썬 모듈
정규 표현식은 문자열을 처리하는데 사용하는 도구로,
특정 패턴을 찾거나 대체, 추출하는 등의 작업을 할 때 유용함
re 모듈에서는 정규표현식 패턴을 정의하고 이를 검색하는 여러 함수를 제공
1. 패턴 컴파일
re.compile() 함수를 사용하여 검색할 패턴을 정의
정규표현식 패턴은 일반적인 문자열과 구분하기 위해 특수한 문자와 기호를 사용
2. 검색
정규 표현식 패턴을 컴파일한 객체의 메서드를 사용하여 검색 대상 문자열에서 패턴을 찾음
3. 결과 처리
검색 결과를 처리하여 필요한 정보를 추출하거나 대체하는 등의 작업을 실행
정규 표현식 기호
기호 | 의미 |
. | 어떤 한 문자 |
* | 바로 앞의 문자가 0개 이상 |
+ | 바로 앞의 문자가 1개 이상 |
? | 바로 앞의 문자가 0개 또는 1개 |
{m} | 바로 앞의 문자가 m개 |
{m,n} | 바로 앞의 문자가 m개 이상, n개 이하 |
[...] | 대괄호 안의 문자 중 하나 |
[^...] | 대괄호 안의 문자를 제외한 문자 중 하나 |
( ) | 그룹화 |
| | or 연산자 |
^ | 문자열의 시작 |
$ | 문자열의 끝 |
\ | 특수 문자 이스케이프 |
\b | 단어 경계 |
\d | 숫자(digit) |
\D | 숫자를 제외한 문자 |
\s | 공백 문자(space, tab, newline 등) |
\S | 공백 문자를 제외한 문자 |
\w | 단어 문자(alphabet, digit, underscore) |
\W | 단어 문자를 제외한 문자 |
ex)
1. 문자열에서 이메일 추출
r'\b\w+@\w+\.\w+\b' : 단어 경계에서 시작하는 이메일 주소 패턴을 찾음
import re
text = "My email is sunone@example.com. Please contact me!"
pattern = r'\b\w+@\w+\.\w+\b'
email = re.search(pattern, text)
if email:
print(email.group()) # 'sunone@example.com'
2. 이메일 주소에서 사용자 명과 도메인 이름 분리
r'^\w+' : 이메일 주소의 시작부터 단어 문자(\w)가 1개 이상인 부분을 찾아 사용자명을 구함
r'@\w+\.\w+' : @ 문자 뒤에 나오는 단어 문자와 마침표(.), 그리고 그 다음 나오는 단어 문자를 찾아 도메인 이름을 구함
username = re.search(r'^\w+', email).group()
domain = re.search(r'@\w+\.\w+', email).group()
print(username) # 출력: sunone
print(domain) # 출력: @example.com
3. 전화번호에서 지역번호와 나머지 번호 분리하기
r'^\d{2}' : 전화번호의 시작부터 숫자(digit)가 2개인 부분을 찾아 지역번호를 구함
r'\d{4}-\d{4}' : 하이픈(-)으로 구분된 4자리 숫자를 찾아 나머지 번호를 구함
import re
phone_number = '02-1234-5678'
area_code = re.search(r'^\d{2}', phone_number).group()
number = re.search(r'\d{4}-\d{4}', phone_number).group()
print(area_code) # 출력: 02
print(number) # 출력: 1234-5678
반응형
'👩💻 Develope > Python' 카테고리의 다른 글
[Pandas] 데이터 프레임 컬럼 순서 바꾸기 (0) | 2023.05.27 |
---|---|
[Pandas] 데이터 프레임에서 suffix를 prefix로 바꾸기 (0) | 2023.05.23 |
[Python] Logging 사용법 (0) | 2023.05.08 |
[Python] 이터레이터(iterator)와 제너레이터(generator) (0) | 2023.05.04 |
[Python] 데코레이터 (decorator) (0) | 2023.05.03 |