Python RegEx

RegEx 또는 정규 표현식은 검색 패턴을 형성하는 문자 시리즈입니다.

RegEx는 문자열이 지정된 검색 패턴을 포함하는지 확인하는 데 사용됩니다.

RegEx 모듈을 제공합니다.

Python은 이름을 re 의 내장 패키지로, 정규 표현식을 처리할 수 있습니다.

임포트 re 모듈:

import re

Python의 RegEx

임포트 re 모듈을 임포트한 후에는 정규 표현식을 사용할 수 있습니다:

예제

문자열이 "China"으로 시작하고 "country"으로 끝나는지 확인합니다:

import re
txt = "China is a great country"
x = re.search("^China.*country$", txt)

실행 예제

RegEx 함수

re 모듈은 정규 표현식을 처리하는 데 사용할 수 있는 함수 집합을 제공합니다:

함수 설명
findall 모든 일치 항목을 포함한 목록을 반환합니다
search 문자열의 어느 위치에서도 일치가 있으면 Match 객체를 반환합니다
split 매번 일치할 때마다 문자열을 분할하는 목록을 반환합니다
sub 한 번 이상의 일치 항목을 문자열로 대체합니다

메타 문자

메타 문자는 특수 의미를 가진 문자입니다:

문자 설명 예제 TIY
[] 한 집합의 문자 "[a-m]" 시도해 보세요
\ 특수 시퀀스(특수 문자를 응축할 수도 있습니다) "\d" 시도해 보세요
. 모든 문자(newline 제외) "he..o" 시도해 보세요
^ 시작말암 "^hello" 시도해 보세요
$ 끝말암 "world$" 시도해 보세요
* 제로 번이나 여러 번 등장 "aix*" 시도해 보세요
+ 한 번이나 여러 번 등장 "aix+" 시도해 보세요
{} 정확히 지정된 등장 횟수 "al{2}" 시도해 보세요
| 둘 중 하나 "falls|stays" 시도해 보세요
() 포획과 그룹화

특수 시퀀스

특수 시퀀스는 다음과 같습니다 \ 다음 표의 특수 문자 중 하나와 함께 사용되면 특수 의미를 가집니다:

문자 설명 예제 TIY
\A 지정된 문자가 문자열의 시작에 있으면 일치 항목을 반환합니다 "\AThe" 시도해 보세요
\b 지정된 문자가 단어의 시작 또는 끝에 있는 일치 항목을 반환합니다 r"\bain"
r"rain\b"
시도해 보세요
시도해 보세요
\B 지정된 문자가 단어의 시작(또는 끝)에 없는 일치 항목을 반환합니다 r"\Bain"
r"rain\B"
시도해 보세요
시도해 보세요
\d 문자열이 숫자(0-9)를 포함하는 일치 항목을 반환합니다 "\d" 시도해 보세요
\D 숫자를 포함하지 않는 문자열의 일치 항목을 반환합니다 "\D" 시도해 보세요
\s 공백 문자를 포함하는 문자열의 일치 항목을 반환합니다 "\s" 시도해 보세요
\S 공백 문자를 포함하지 않는 문자열의 일치 항목을 반환합니다 "\S" 시도해 보세요
\w 문자열이 어떤 단어 문자를 포함하는 일치 항목을 반환합니다
a부터 Z까지의 문자, 0부터 9까지의 숫자와 언더스코어 문자 _
"\w" 시도해 보세요
\W 문자열이 어떤 단어 문자도 포함하지 않는 일치 항목을 반환합니다 "\W" 시도해 보세요
\Z 지정된 문자가 문자열의 끝에 있으면 일치 항목을 반환합니다 "스페인\Z" 시도해 보세요

셋(셋)

집합(Set)은 쌍 괄호입니다 [] 내의 그룹 문자는 특별한 의미를 가집니다:

집합 설명 시도해 보세요
[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] 0에서 9 사이의 어떤 숫자든 일치하는 것을 반환합니다: 시도해 보세요
[a-zA-Z] 소문자 또는 대문자로서 a와 z 사이의 어떤 문자든 일치하는 것을 반환합니다: 시도해 보세요
[+] 집합에서 +, *, ., |, (), $, {}는 특별한 의미가 없으므로 [+]는 다음과 같이 표시됩니다: 시도해 보세요

findall() 함수

findall() 함수는 모든 일치 항목을 포함하는 리스트를 반환합니다。

예제

모든 일치 항목의 리스트를 출력합니다:

import re
str = "China is a great country"
x = re.findall("a", str)
print(x)

실행 예제

이 리스트는 찾은 순서로 일치 항목을 포함합니다。

일치 항목을 찾지 못하면 빈 리스트를 반환합니다:

예제

일치를 찾지 못하면 빈 리스트를 반환합니다:

import re
str = "China is a great country"
x = re.findall("USA", str)
print(x)

실행 예제

search() 함수

search() 함수는 문자열에서 일치를 검색하고 일치가 있으면 Match 객체를 반환합니다。

여러 일치가 있더라도 첫 번째 일치만 반환합니다:

예제

문자열에서 첫 번째 공백 문자를 검색합니다:

import re
str = "China is a great country"
x = re.search("\s", str)
print("The first white-space character is located in position:", x.start())

실행 예제

일치를 찾지 못하면 반환 값 None

예제

일치를 반환하지 않는 검색을 수행합니다:

import re
str = "China is a great country"
x = re.search("USA", str)
print(x)

실행 예제

split() 함수

split() 함수는 매번 일치할 때마다 문자열을 분할하는 리스트를 반환합니다:

예제

각 공백 문자에서 분할합니다:

import re
str = "China is a great country"
x = re.split("\s", str)
print(x)

실행 예제

지정하여 사용할 수 있습니다. maxsplit 파라미터를 사용하여 나타나는 횟수를 제어합니다:

예제

첫 번째로 나타나는 곳에서만 문자열을 분할합니다:

import re
str = "China is a great country"
x = re.split("\s", str, 1)
print(x)

실행 예제

sub() 함수

sub() 함수는 선택한 텍스트로 대체할 수 있습니다:

예제

각 공백 문자를 숫자 9으로 대체합니다:

import re
str = "China is a great country"
x = re.sub("\s", "9", str)
print(x)

실행 예제

지정하여 사용할 수 있습니다. count 替换次数를 제어하는 매개변수:

예제

처음 두 번 나타나는 것을 대체:

import re
str = "China is a great country"
x = re.sub("\s", "9", str, 2)
print(x)

실행 예제

Match 객체

Match 객체는 검색 및 결과 정보를 포함하는 객체입니다.

주석:일치 항목이 없으면 반환 값 NoneMatch 객체 대신 사용.

예제

검색은 Match 객체를 반환합니다:

import re
str = "China is a great country"
x = re.search("a", str)
print(x) # 객체를 출력합니다

실행 예제

Match 객체는 검색 및 결과 정보를 얻기 위한 속성과 메서드를 제공합니다:

  • span() 반환된 튜플은 일치하는 시작 및 종료 위치를 포함합니다
  • .string 함수에 전달된 문자열을 반환
  • group() 일치하는 문자열 부분을 반환

예제

처음 일치하는 위치(시작 및 종료 위치)를 출력.

대문자 "C"로 시작하는 모든 단어를 찾는 정규 표현식:

import re
str = "China is a great country"
x = re.search(r"\bC\w+", str)
print(x.span())

실행 예제

예제

함수에 전달된 문자열을 출력:

import re
str = "China is a great country"
x = re.search(r"\bC\w+", str)
print(x.string)

실행 예제

예제

일치하는 문자열 부분을 출력.

대문자 "C"로 시작하는 모든 단어를 찾는 정규 표현식:

import re
str = "China is a great country"
x = re.search(r"\bC\w+", str)
print(x.group())

실행 예제

주석:일치 항목이 없으면 반환 값 NoneMatch 객체 대신 사용.