👩‍💻 Develope/Python

[Python] 정규 표현식

heywantodo 2023. 5. 10. 16:09
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

 

728x90
반응형