RegEx 또는 정규식은 검색 패턴을 구성하는 문자의 시퀀스이다.
RegEx를 사용하여 문자열에 지정된 검색 패턴이 포함되어 있는지 확인할 수 있다.
파이썬 RegEx 모듈
Python에는 re라는 패키지가 내장되어 있으며, 이 패키지는 정규 표현식과 함께 작동하는 데 사용할 수 있다.
re 모듈 가져오기:
import re |
파이썬에서 RegEx
re 모듈을 가져오면 다음과 같은 정규식을 사용할 수 있다:
문자열을 검색하여 문자열이 "The"로 시작하여 "Spain"으로 끝나는지 확인한다:
import re txt = "The rain in Spain" x = re.search("^The.*Spain$", txt) if x: print("YES! We have a match!") else: print("No match") |
위의 코드를 실행하면 아래 그림과 같다.
파이썬 RegEx 함수
re 모듈은 문자열에서 일치하는 항목을 검색할 수 있는 기능을 제공한다:
함수 | 설명 |
findall | 모든 일치 항목이 들어 있는 목록을 반환합니다 |
search | 문자열의 어느 곳에나 일치하는 항목이 있는 경우 Match 개체를 반환합니다 |
split | 각 매치에서 문자열이 분할된 목록을 반환합니다 |
sub | 하나 이상의 일치 항목을 문자열로 바꿉니다 |
파이썬 메타문자(Metacharacters)
메타문자는 특별한 의미를 가진 문자이다:
문자 | 설명 | 예 |
[] | 문자들의 집합 | "[a-m]" |
\ | 특수 시퀀스 신호(특수 문자를 탈출하는 데 사용할 수도 있음) | "\d" |
. | 임의의 문자(new line 제외) | "he..o" |
^ | ~로 시작하는 | "^hello" |
$ | ~로 끝나는 | "planet$" |
* | 없거나 모든 문자(zero 포함) | "he.*o" |
+ | 하나 혹은 모든 문자(최소한 1문자) | "he.+o" |
? | 없거나 한 문자 | "he.?o" |
{} | 특정 숫자만큼의 문자 | "he.{2}o |
| | either or (둘중에 하나) | "falls|stays" |
() | 캡처 와 그룹 |
파이썬 특수 문자
특별한 순서는 아래 목록에 있는 문자 중 하나인 \ 뒤에 오는 것으로 특별한 의미가 있다:
문자 | 설명 | 예제 |
\A | 지정한 문자가 문자열 시작 부분에 있을 경우 일치 항목을 반환합니다 | "\AThe" |
\b | 지정한 문자가 단어의 처음 또는 끝에 있는 일치 항목을 반환합니다 (처음의 "r"은 문자열이 "raw string"으로 취급되는지 확인하는 것입니다.) |
r"\bain" |
\B | 지정된 문자가 있지만 단어의 처음(또는 끝)에는 없는 일치 항목을 반환합니다 (처음의 "r"은 문자열이 "raw string"으로 취급되는지 확인하는 것입니다.) |
r"\Bain" r"ain\B" |
\d | 문자열에 숫자(0~9의 숫자)가 포함된 일치 항목을 반환합니다 | "\d" |
\D | 문자열에 숫자가 포함되지 않은 일치 항목을 반환합니다 | "\D" |
\s | 문자열에 공백 문자가 포함된 일치 항목을 반환합니다 | "\s" |
\S | 문자열에 공백 문자가 포함되지 않은 일치 항목을 반환합니다 | "\S" |
\w | 문자열에 단어 문자(a~Z 문자, 0~9의 숫자 및 밑줄 문자)가 포함된 일치 항목을 반환합니다 | "\w" |
\W | 문자열에 단어 문자가 포함되지 않은 일치 항목을 반환합니다 | "\W" |
\Z | 지정한 문자가 문자열 끝에 있을 경우 일치 항목을 반환합니다 | "Spain\Z" |
파이썬 집합(Sets)
집합은 다음과 같은 특별한 의미를 가진 대괄호 [] 쌍 안의 문자 집합이다:
집합 | 설명 |
[arn] | 지정한 문자(a, r 또는 n) 중 하나가 있는 일치 항목을 반환합니다 |
[a-n] | a와 n 사이의 알파벳 순서로 소문자에 대한 일치를 반환합니다 |
[^arn] | a, r 및 n을 제외한 모든 문자에 대한 일치를 반환합니다 |
[0123] | 지정한 숫자(0, 1, 2 또는 3)가 있는 일치 항목을 반환합니다 |
[0-9] | 0과 9 사이의 숫자에 대해 일치하는 값을 반환합니다 |
[0-5][0-9] | 00와 59의 두 자리 숫자에 대한 일치를 반환합니다 |
[a-zA-Z] | a와 z 사이의 알파벳, 소문자 또는 대문자와 일치하는 문자를 반환합니다 |
[+] | 집합에서 +, *, ., |, (), $,{}는 특별한 의미가 없으므로 [+]는 다음을 의미합니다. 문자열의 임의의 + 문자에 대해 일치를 반환합니다 |
파이썬 findall() 함수
find all() 함수는 모든 일치 항목을 포함하는 목록을 반환한다.
import re #Return a list containing every occurrence of "ai": txt = "The rain in Spain" x = re.findall("ai", txt) print(x) |
위의 코드를 실행하면 아래 그림과 같다.
목록에는 일치하는 항목이 검색된 순서대로 표시된다.
일치하는 항목이 없으면 빈 목록이 반환된다:
import re txt = "The rain in Spain" #Check if "Portugal" is in the string: x = re.findall("Portugal", txt) print("re.findall('Portugal', txt) : ", x) if (x): print("일치!") else: print("불일치!") |
위의 코드를 실행하면 아래 그림과 같다.
파이썬 sarch() 함수
search() 함수는 문자열에서 일치 항목을 검색하고 일치 항목이 있는 경우 일치 개체를 반환한다.
두 개 이상의 일치 항목이 있을 경우, 해당 일치 항목의 첫 번째 항목만 반환된다:
문자열에서 첫 번째 공백 문자를 검색한다:
import re txt = "The rain in Spain" print("txt : ", txt) x = re.search("\s", txt) print("The rain in Spain에서 첫번째 공백 위치 : ", x.start()) |
위의 코드를 실행하면 아래 그림과 같다.
일치하는 항목이 없으면 None 값이 반환된다:
import re txt = "The rain in Spain" print("txt : ", txt) x = re.search("Portugal", txt) print("re.search('Portugal') : ", x) |
위의 코드를 실행하면 아래 그림과 같다.
지금까지 파이썬 RegEx 정규식으로 다양한 상황 가운데 원하는 단어나 문장으 검색하는 식과 함수에 대해서 살펴보았다.
꼭 손으로 눈으로 머리로 익히며 실습하기를 바란다.
모두 화이팅입니다.!!!
출처 : 이 글의 출처는 w3schools사이트를 참고하였으며 필자가 추가하여 정리한 글입니다.
'파이썬 > 파이썬기본문법' 카테고리의 다른 글
파이썬 PIP (1) | 2023.11.25 |
---|---|
파이썬 RegEx-2 (split(), sub()) (0) | 2023.11.24 |
파이썬 JSON (2) | 2023.11.22 |
파이선 math (1) | 2023.11.21 |
파이썬 datetime (1) | 2023.11.20 |
댓글