내가 한 노력들

[ Python ] re 라이브러리를 이용해 '정규식' 사용하기 본문

IT 공부/python

[ Python ] re 라이브러리를 이용해 '정규식' 사용하기

JONGI-N CHOI 2022. 1. 21. 12:00

정규식 규칙 설정

re.compile() 

import re

p = re.compile('te.t')

re라이브러리를 사용하기위해서 우선 import로 선언을 해줍니다. 

 

그리고, re.compile()을 사용하여 원하는 정규식을 선언할 수 있습니다. 

p변수에는 'te.t'라는 정규식의 규칙이 포함되어있는 상태입니다. 

 

여기서

"." : 하나의 문자열을 의미합니다. 

"^" : 문자열의 시작을 의미

"$" :  문자열의 끝을 의미

 

즉 'te.t'는 test나 tett등 세번째 위치에 아무런 문자열만 오면 일치하는 정규식입니다. 


정규식과 입력값 매치

match()

import re #정규식 라이브러리

p  = re.compile("ca.e")  
m = p.match('case')

match는 앞부분부터 문자열이 일치하는지를 확인합니다. 

입력받은 'case'가 정규식 'ca.e'와 일치하는지 앞부분부터 검사합니다. 

 

 

 

search()

search()는 입력받은 전체 값중에서 정규식과 일치하는 것이 있는지를 확인합니다. 

match()와 비교해보면, match()는 입력받은 값의 시작부분부터 검사를 하지만, search()는 전체를 검사합니다. 

import re #정규식 라이브러리

p  = re.compile("ca.e")  
m = p.search('hello case')

즉 위와같의 코드는 match를 사용하게 되면, case의 위치가 문자열 뒤에 있기  때문에 실패하지만

search를 사용하게 되면, case가 정상적으로 일치되는 것을 확인할 수 있습니다. 

 

findall()

findall()은 정규식과 일치하는 모든 값을 list로 반환합니다. 

import re #정규식 라이브러리

p  = re.compile("ca.e")  
m_list = p.findall('case cafe')
print(m_list)

위의 사진이 출력값이 됩니다. 


정규식과 매치된 값 출력하기

group()

import re #정규식 라이브러리

p  = re.compile("ca.e")  
m = p.match('case')
print(m.group())

group()는 정규식과 일치하는 문자열을 출력해줍니다. 

즉, case가 출력이 됩니다. 

 

string

import re #정규식 라이브러리

p  = re.compile("ca.e")  
m = p.match('case')
print(m.string)

string은 입력받은 정규식 대상의 값을 출력합니다. 

 

group()과 비교해서 보면, 쉽게알 수 있습니다. 

import re #정규식 라이브러리

p  = re.compile("ca.e")  
m = p.match('caseless')
print(m.group())
print(m.string)

위의 사진의 위의 코드의 출력값이 됩니다. 

group()은 정규식에 일치하는 문자열만 반환하지만, string을 사용하면 입력받은 문자열 전체를 반환합니다. 

 

start / end / span

위 세개의 함수는 문자열에 관련된 함수입니다. 

 

start는 정규식과 일치하는 문자열의 시작 index

end는 정규식과 일치하는 문자열의 끝 index

span는 정규식과 일치하는 문자열의 시작과 끝 index