언어·프레임워크/Python
[Python] 정규 표현식 (Regular Expression)
DandyNow
2025. 4. 25. 09:48
728x90
반응형
정규 표현식 (Regular Expression)
Python에서 이 정도는 기본적으로 알아야하는 정규 표현식이라고 생각해 정리해 보았다.
1. 기본 메타 문자 (Meta Characters)
.
: 임의의 한 문자 (개행 문자 제외)^
: 문자열의 시작$
: 문자열의 끝*
: 앞의 문자가 0번 이상 반복+
: 앞의 문자가 1번 이상 반복?
: 앞의 문자가 0번 또는 1번 나타남[]
: 문자 집합. [abc]는 a, b, c 중 하나를 의미[^]
: 부정 문자 집합. [^abc]는 a, b, c를 제외한 나머지 문자 중 하나를 의미|
: OR 연산. a|b는 a 또는 b를 의미()
: 그룹. 매칭된 부분을 캡처하여 나중에 사용 가능\
: 이스케이프 문자. 메타 문자를 리터럴 문자로 사용하기 위해 (예: \.은 점 문자를 의미)
2. 특수 시퀀스 (Special Sequences)
\d
: 숫자 (digit).[0-9]
와 동일\D
: 숫자가 아닌 문자.[^0-9]
와 동일\w
: 단어 문자 (word character).[a-zA-Z0-9_]
와 동일\W
: 단어 문자가 아닌 문자.[^a-zA-Z0-9_]
와 동일\s
: 공백 문자 (space character).[ \t\n\r\f\v]
와 동일\S
: 공백 문자가 아닌 문자.[^ \t\n\r\f\v]
와 동일
3. 수량자 (Quantifiers)
{n}
: 앞의 문자가 정확히 n번 반복{n,}
: 앞의 문자가 n번 이상 반복{n,m}
: 앞의 문자가 n번 이상 m번 이하 반복
4. 정규 표현식 플래그 (Flags)
re.IGNORECASE
또는re.I
: 대소문자를 구별하지 않음re.MULTILINE
또는re.M
: 여러 줄 문자열에서^
과$
이 각 줄의 시작과 끝에 매칭됨re.DOTALL
또는re.S
:.
이 개행 문자(\n
)와도 매칭됨
5. re 모듈 함수
re.search(pattern, string)
: 문자열에서 패턴과 일치하는 첫 번째 부분을 찾음.Match
객체 반환re.match(pattern, string)
: 문자열의 시작부터 패턴과 일치하는지 확인.Match
객체 반환re.findall(pattern, string)
: 문자열에서 패턴과 일치하는 모든 부분을 리스트로 반환re.finditer(pattern, string)
: 문자열에서 패턴과 일치하는 모든 부분을 이터레이터로 반환re.sub(pattern, replacement, string)
: 문자열에서 패턴과 일치하는 부분을 replacement로 대체
6. 예제 코드로 보는 정규 표현식 상세 분석
\d+
match = re.search(r'\d+', "123")
\d+
: 숫자가 1번 이상 반복됨- 전체적으로, 이 정규 표현식은 문자열에서 1개 이상의 연속된 숫자를 찾는다.
prob_text
에서 첫 번째로 나타나는 정수를 추출하는 데 사용된다.
-?\d+
match = re.search(r'-?\d+', "-123")
-?
:-
문자가 0번 또는 1번 나타남 (음수 부호 선택적)\d+
: 숫자가 1번 이상 반복됨- 전체적으로, 이 정규 표현식은 문자열에서 음수 부호가 있을 수도 있는 정수 형태의 숫자를 찾는다. temp_text_combined에서 첫 번째로 나타나는 정수를 추출하는 데 사용된다.
\d+\.?\d*
match = re.search(r'\d+\.?\d*', "1.23")
\d+
: 숫자가 1번 이상 반복됨\.?
: . 문자가 0번 또는 1번 나타남 (소수점 선택적)\d*
: 숫자가 0번 이상 반복됨- 전체적으로, 이 정규 표현식은 소수점을 포함할 수도 있는 숫자를 찾는다.
pcp_text
에서 첫 번째로 나타나는 소수 또는 정수를 추출하는 데 사용된다.
7. 그룹 캡처
()
를 사용하여 정규 표현식의 일부를 그룹으로 묶을 수 있다.match.group(0)
은 전체 매칭된 문자열을 반환한다.match.group(1)
은 첫 번째 그룹에 매칭된 문자열을 반환한다.match.group(2)
는 두 번째 그룹에 매칭된 문자열을 반환한다.- ...
import re
match = re.search(r"(\d+)[.](d*)", "123.45")
print(match.group()) # 전체 일치: '123.45'
print(match.group(0)) # 전체 일치: '123.45'
print(match.group(1)) # 첫 번째 그룹 (d+): '123'
print(match.group(2)) # 두 번째 그룹 (d*): '45'
8. 추가 학습 자료
- Python re 모듈 공식 문서: https://docs.python.org/3/library/re.html
- 정규 표현식 시각화 도구: https://regex101.com/
728x90
반응형