본문 바로가기
파이썬/파이썬기본문법

파이썬 RegEX - (findall(), search())

by flycoding 2023. 11. 23.
반응형

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.search() 함수 활용 예제

 

파이썬 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)

위의 코드를 실행하면 아래 그림과 같다.

파이썬 findall() 함수 활용 예제

 

목록에는 일치하는 항목이 검색된 순서대로 표시된다.
일치하는 항목이 없으면 빈 목록이 반환된다:

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("불일치!")

위의 코드를 실행하면 아래 그림과 같다.

파이썬 findall() 함수 활용 예제

 

파이썬 sarch() 함수

search() 함수는 문자열에서 일치 항목을 검색하고 일치 항목이 있는 경우 일치 개체를 반환한다.
두 개 이상의 일치 항목이 있을 경우, 해당 일치 항목의 첫 번째 항목만 반환된다:

 

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

import re

txt = "The rain in Spain"
print("txt : ", txt)

x = re.search("\s", txt)

print("The rain in Spain에서 첫번째 공백 위치 : ", x.start()

위의 코드를 실행하면 아래 그림과 같다.

파이썬 search() 함수 start() 함수 활용 예제

 

일치하는 항목이 없으면 None 값이 반환된다:

import re

txt = "The rain in Spain"
print("txt : ", txt)

x = re.search("Portugal", txt)
print("re.search('Portugal') : ", x)

위의 코드를 실행하면 아래 그림과 같다.

파이썬 search() 함수 활용 예제

 

지금까지 파이썬 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

댓글