정규식(regular expressions)은 프로그래밍 언어 내장된 문자열 처리를 위한 언어입니다. 패턴을 기반으로 문자열에 대한 검색, 삭제, 치환 기능을 수행할 수 있습니다. 예를 들어 이메일 주소, 전화번호, 우편번호 등과 같이 널리 사용되는 형식의 패턴을 추출 하거나 문자열 분리, 삭제, 치환 등의 텍스트 정제에 사용할 수 있습니다.
정규식 메타 문자열
메타 문자열은 정규식에서 문자열 매치 할 때 사용하는 문자열입니다. 다음과 같은 문자열이 있습니다.
. ^ $ * + ? { } [ ] \ | ( )
위에서 열거한 메타 문자는 정규식에서 특별한 의미가 있습니다.
메타 문자 | 예시 | 의미 |
---|---|---|
. | <?xml.*?> | 아무 문자 하나와 일치 |
^ | ^<?xml.*?> | <?xml.*?> 문자열을 일치 하고, 문자열의 시작을 정확히 일치 |
$ | <?xml.*?>$ | 문자열을 일치 하고, 문자열 마지막을 정확히 일치 |
* | [a-z]* | 소문자(a-z)중 하나 이상 문자와 일치하거나 일치하는 문자가 없는 경우 |
+ | [a-z]+ | 소문자(a-z)중 하나 이상 문자와 일치 |
? | ? | 없거나 하나인 경우 일치 |
{ } | [a-z]{1,5} | 소문자의 최소 개수는 1개이고, 최대 개수는 5개 일치 |
[ ] | [a-z] | 소문자 a-z 중에서 하나의 문자와 일치 |
\ | \ | 문자 그대로 출력하라는 메타 문자 |
( ) | (19|20)\d{2} | 하위 표현식(19 또는 20으로 시작하는 숫자) 다음에 2자리 숫자가옴 |
마침표 .
는 아무 문자 하나와 일치하는 메타 문자입니다. +는 문자 집합에 속하는 문자가 하나 이상인 경우에 사용합니다. 역슬래시 \ 는 문자 그대로 출력하는 메타 문자입니다.
공백 메타 문자
정규식 축약 패턴 | |
---|---|
\f | 숫자(0-9)에 매칭합니다. |
\n | 줄바꿈 |
\r | 캐리지 리턴 |
\t | 탭 |
\v | 수직탭 |
공백 메타 문자
정규식 축약 패턴 | |
---|---|
\s | 모든 공배 문자 [\f\n\r\t\v] |
\S | 공백 문자가 아닌 모든 문자 [^\f\n\r\t\v] |
정규식 패턴
정규식 패턴 | 정규식 축약 패턴 | |
---|---|---|
[0-9] | \d | 숫자(0-9)에 매칭합니다. |
[^0-9] | \D | 숫자가 아닌 문자열에 매칭합니다. |
[ \t\n\r\f\v] | \s | 모든 공백 문자와 매칭합니다. |
[^ \t\n\r\f\v] | \S | 공백이 아닌 문자열에 매칭합니다. |
[a-zA-Z0-9_] | \w | 알파벳, 숫자, 언더바 문자열에 매칭합니다. |
[^a-zA-Z0-9_] | \W | 알파벳, 숫자, 언더바 문자열가 아닌 문자열에 매칭합니다. |
정규식 내장 메서드
위에서 정의한 정규식 매칭시 사용할 수 있는 파이썬 메서드는 다음과 같습니다.
Method/Attribute | Purpose |
---|---|
match() |
정규식을 문자열의 첫 문자부터 마지막 문자 까지 정확히 매칭되는지 |
search() |
정규식에 매칭되는 문자열을 탐색 |
findall() |
정규식에 매칭되는 모든 부분 문자열을 찾아 목록 형태로 반환함 |
finditer() |
정규식에 매칭되는 모든 부분 문자열을 찾아 iterator로 반환함 |