Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python 정규 표현식(Regex) 패턴 완벽 정리

Python 정규 표현식 패턴 개요

Python에서 정규 표현식(regular expression)은 문자열 검색, 치환, 유효성 검사 등에 활용되는 강력한 도구입니다. re 모듈을 통해 다양한 패턴 문법을 사용할 수 있습니다.

특수 제어 문자인 ( + ? . * ^ $ ( ) [ ] { } | \ )를 제외한 모든 문자는 자기 자신과 일치합니다. 이러한 제어 문자를 문자 그대로 매칭하려면 앞에 백슬래시(\)를 붙여 이스케이프 처리하면 됩니다.

아래 표는 Python에서 사용할 수 있는 주요 정규 표현식 문법을 정리한 것입니다.

정규 표현식 패턴 목록

번호패턴 및 설명
1^
줄(line)의 시작과 일치합니다.
2$
줄의 끝과 일치합니다.
3.
줄바꿈 문자를 제외한 임의의 단일 문자와 일치합니다. m 옵션을 사용하면 줄바꿈 문자도 일치시킬 수 있습니다.
4[...]
대괄호 안에 포함된 임의의 단일 문자와 일치합니다.
5[^...]
대괄호 안에 포함되지 않은 임의의 단일 문자와 일치합니다.
6re*
앞의 표현식이 0번 이상 반복되는 경우와 일치합니다.
7re+
앞의 표현식이 1번 이상 반복되는 경우와 일치합니다.
8re?
앞의 표현식이 0번 또는 1번 나타나는 경우와 일치합니다.
9re{ n}
앞의 표현식이 정확히 n번 반복되는 경우와 일치합니다.
10re{ n}
앞의 표현식이 n번 이상 반복되는 경우와 일치합니다.
11re{ n, m}
앞의 표현식이 최소 n번, 최대 m번 반복되는 경우와 일치합니다.
12a| b
a 또는 b 중 하나와 일치합니다.
13(re)
정규 표현식을 그룹으로 묶고, 일치한 텍스트를 기억합니다.
14(?imx)
정규 표현식 내에서 i, m, x 옵션을 일시적으로 활성화합니다. 괄호 안에 있으면 해당 영역에만 적용됩니다.
15(?-imx)
정규 표현식 내에서 i, m, x 옵션을 일시적으로 비활성화합니다. 괄호 안에 있으면 해당 영역에만 적용됩니다.
16(?: re)
일치한 텍스트를 기억하지 않고 정규 표현식을 그룹화합니다.
17(?imx: re)
괄호 안에서 i, m, x 옵션을 일시적으로 활성화합니다.
18(?-imx: re)
괄호 안에서 i, m, x 옵션을 일시적으로 비활성화합니다.
19(?#...)
주석(comment)입니다.
20(?= re)
패턴을 이용해 위치를 지정합니다(긍정형 전방 탐색). 소비 범위가 없습니다.
21(?! re)
패턴의 부정을 이용해 위치를 지정합니다(부정형 전방 탐색). 소비 범위가 없습니다.
22(?> re)
역추적(backtracking) 없이 독립적인 패턴과 일치합니다.
23\w
단어 문자(word characters)와 일치합니다.
24\W
단어 문자가 아닌 문자와 일치합니다.
25\s
공백 문자와 일치합니다. [\t\n\r\f]와 동일합니다.
26\S
공백이 아닌 문자와 일치합니다.
27\d
숫자(digit)와 일치합니다. [0-9]와 동일합니다.
28\D
숫자가 아닌 문자와 일치합니다.
29\A
문자열(string)의 시작과 일치합니다.
30\Z
문자열의 끝과 일치합니다. 줄바꿈 문자가 존재하면 그 바로 앞 지점과 일치합니다.
31\z
문자열의 끝과 일치합니다.
32\G
마지막 매칭이 종료된 지점과 일치합니다.
33\b
대괄호 밖에서는 단어 경계(word boundary)와 일치하고, 대괄호 안에서는 백스페이스(0x08)와 일치합니다.
34\B
단어 경계가 아닌 지점과 일치합니다.
35\n, \t 등
줄바꿈(newline), 캐리지 리턴(carriage return), 탭(tab) 등과 일치합니다.
36\1...\9
n번째로 그룹화된 하위 표현식(subexpression)과 일치합니다.
37\10
이미 매칭된 경우 n번째 그룹화된 하위 표현식과 일치하며, 그렇지 않으면 문자 코드의 8진수(octal) 표현을 참조합니다.

마무리

정규 표현식은 처음에는 복잡해 보일 수 있지만, 위 패턴들을 익혀두면 텍스트 처리 작업을 훨씬 효율적으로 수행할 수 있습니다. 실제 코드에 적용하기 전에 re.compile()로 패턴을 미리 컴파일하면 성능 면에서도 유리합니다.