
. ^ $ * + ? { } [ ] \ | ( ) []: 대괄호 안의 문자 중 하나와 매치 [abc] → a, b, c 중 하나와 매치 -(하이픈)을 사용해 범위를 지정 가능 [a-c] → [a, b, c]와 동일 [0-5] → [0,1,2,3,4,5] [a-zA-Z] → 모든 알파벳 [0-9] → 숫자 전체 ^: not(부정)의 의미를 가짐 [^0-9] → 숫자가 아닌 문자와 매치 | 표현식 | 의미 | 동일 표현식 |
|---|---|---|
\d | 숫자와 매치 | [0-9] |
\D | 숫자가 아닌 문자 | [^0-9] |
\s | 공백 문자 | [ \t\n\r\f\v] |
\S | 공백이 아닌 문자 | [^ \t\n\r\f\v] |
\w | 문자 + 숫자 | [a-zA-Z0-9_] |
\W | 문자 + 숫자가 아닌 문자 | [^a-zA-Z0-9_] |
\n)를 제외한 모든 문자와 매치 a.b aab, a0b abc (a와 b 사이에 문자가 없음) a* → a가 0번 이상 반복 ca+t → cat, caaat 등과 매치 {m,n}: 반복 횟수를 직접 지정 {3,} → 3회 이상 {,3} → 3회 이하 {m} → 정확히 m회 {0,1}과 동일한 기능 ab?c → b 문자가 0번 또는 1번 존재 파이썬에서 정규표현식을 다루기 위한 기본 내장 모듈
기본 사용법
import re p = re.compile('ab*')주요 함수
match(): 문자열 시작 부분부터 매치 확인 search(): 문자열 전체 검색 findall(): 매치되는 모든 문자열을 리스트로 반환 finditer(): 매치되는 모든 문자열을 이터레이터로 반환 group() 함수를 통해 매치된 문자열 출력 가능 match(): 문자열 시작 위치에서만 매치 시도 search(): 문자열 전체에서 매치 시도 | 옵션 | 의미 |
|---|---|
DOTALL (S) | 줄바꿈 문자 포함 모든 문자 매치 |
IGNORECASE (I) | 대소문자 구분 없이 매치 |
MULTILINE (M) | 여러 줄에서 ^, $ 메타문자 인식 |
VERBOSE (X) | 정규식을 보기 쉽게 작성하고 주석 허용 |
re.compile(r"""
^python\s\w+ # python으로 시작하고 공백 후 단어가 옴
""", re.VERBOSE)
\s 같은 이스케이프 문자가 해석될 수 있음 \\를 사용해 백슬래시 자체를 표현해야 함 \\ → \로 해석됨 \\section을 찾으려면 \\\\section으로 작성해야 함 r"문자열")을 사용하면 \\ 대신 \ 그대로 인식 가능 "\\section" r"\section" raw 문자열을 사용하면 백슬래시 이스케이프 문제 없이 정규표현식 작성 가능