PYTHON

[정규식] re 라이브러리

한번해보즈아 2022. 4. 16. 19:50

정규식이란 영어 소문자, 대문자, 한글등 자연어 처리를 하기 위해서 사용되는 개념으로 파이썬에서는 re 라이브러리를 이용해서 주로 처리한다

 

import re
p = re.compile(r'[a-z]+')
m=p.match("python")
print(m)

<re.Match object; span=(0, 6), match='python'>

이런식으로 소문자에 맞는 문자를 매칭시키거나 search, findall, finditer 4가지의 메서드를 사용할수있으며 각 기능은 다음과같다

Method 목적
match() 문자열의 처음부터 정규식과 매치되는지 조사한다.
search() 문자열 전체를 검색하여 정규식과 매치되는지 조사한다.
findall() 정규식과 매치되는 모든 문자열(substring)을 리스트로 돌려준다.
finditer() 정규식과 매치되는 모든 문자열(substring)을 반복 가능한 객체로 돌려준다.

re.compile도 다양한 메소드 중 하나의 메소드로써 다른 메소드에 비해 비용이 저렴하다는 장점이 있다. 즉, re.split, re.sub, re.search같은 다른 메소드는 한두번 사용할때는 별 차이를 못느끼지만 같은 정규식 패턴을 많이 사용하거나 반복문을 이용할 경우 성능에 부담이 가서 비용이 비싸다는 단점이 있으며 이를 해결하기 위한 메소드가 re.compile 이다. re.compile은 미리 컴파일을 해두고 저장해둘수 있다

 

r'[a-z]+'과 '[a-z]+'의 차이점은 바로 r의 여부인데 r의 기능은 이스케이프문자에 영향을 안받을수 있다는점이다

이스케이프 문자의 예시는 다음과 같다.

\n 아래로 줄바꿈(엔터)
\t 옆으로 칸 띄움(TAB)
\b 백슬레시 한 칸앞을 지운다.
\r 현재줄의 맨 앞글자로 이동

 

print(r"\n \t \r을 쓰면 이스케이프 문자 적용불가")
\n \t \r을 쓰면 이스케이프 문자 적용불가

print("\n \t \r을 쓰면 이스케이프 문자 적용")
을 쓰면 이스케이프 문자 적용불가