728x90
're'는 Python에서 정규 표현식(Regular Expression)을 다루기 위한 내장 모듈이다. 정규 표현식이란 특정한 규칙을 가진 문자열의 집합을 찾고 추출하는 작업을 수행하는 검색 패턴이다.
정규 표현식 문법
메타문자 | 설명 |
. | 한 개의 임의의 문자 "a.c" > abc acc asc |
* | 문자가 무한개로 존재하거나, 존재하지 않을 수도 있다. "abc*d" > abccd abccdd abcd |
+ | 문자가 최소 한 개 이상 존재 "abc+d > abccd abccdd |
? | 문자가 존재할 수도, 존재하지 않을 수도 있다. |
| | 둘 중 하나 |
$ | 앞의 문자열로 문자열이 끝난다. |
[] | 문자 집합(Character Set) "[abc]" > a b c abc ab bc |
^ | 문자열의 시작 "^ab" > abb abc abcd |
{숫자} 기호 | 해당 문자를 숫자만큼 반복 "ab{3}c" > abbbc |
{숫자1, 숫자2} 기호 | 해당 문자를 <숫자1>이상 <숫자2> 이하만큼 반복 "ab{3, 5}c" > abbbbbc |
[^문자] | ^ 기호 뒤에 붙은 문자들을 제외한 모든 문자를 매치 |
import re
text = 'I love to eat apples.'
result = re.search(r'apples?', text)
if result:
print('Match found:', result.group())
else:
print('No match')
apple, apples를 모두 찾아낸다.
정규 표현식 모듈 함수
모듈 함수 | |
re.compile() | 정규 표현식을 컴파일하는 함수이다. *컴파일(Compile): 프로그래밍 언어를 기계어로 변환하는 과정 |
re.search() | 문자열 전체에 대해 정규 표현식과 매치되는 것을 검색한다. |
re.match() | 문자열의 처음이 정규 표현식과 매치되는 것을 검색한다. |
re.split() | 정규 표현식을 기준으로 문자열을 분리하여 리스트로 반환한다. |
re.findall() | 문자열에서 정규 표현식과 매치되는 모든 경우의 문자열을 찾아서 리스트로 반환한다. 매치되는 문자열이 없으면 빈 리스트로 리턴된다. |
re.finditer() | 문자열에서 정규 표현식과 매치되는 모든 경우의 문자열에 대한 이터레이터 객체를 반환한다. |
re.sub() | 문자열에서 정규 표현식과 일치하는 부분에 대해서 다른 문자열로 대체한다. |
다음과 같이 re.compile() 함수를 사용하여 pattern 객체를 생성하고 re.findall() 함수를 사용하여 문자열에서 대문자로 이루어진 모든 단어를 찾아내는 작업을 수행할 수 있다.
import re
pattern = re.compile(r'\b[A-Z]+\b') # 대문자로 이루어진 단어 패턴
# pattern 객체를 사용하여 검색 작업 수행
text = 'Python is a GREAT programming language!'
result = pattern.findall(text)
print(result) # ['PYTHON', 'GREAT']
r
역슬래시(\)를 이스케이프 처리하지 않고 문자 그대로 사용하게 해준다.
*역슬래시를 이스케이프 처리하면 다음에 오는 문자가 특정한 의미를 갖게 된다.
예)
\n --> 개행 문자. 줄바꿈을 해준다.
\t --> 탭 문자.
728x90
'자연어 처리(NLP) 공부' 카테고리의 다른 글
[NLP 스터디] Tokenization, Lemmatization & Stemming (1) | 2023.04.24 |
---|---|
자연어 처리(NLP) - 품사 태깅(Tagging) (0) | 2023.03.17 |
자연어 처리(NLP) - 어간 추출과 표제어 추출 모두 수행하기 (0) | 2023.03.16 |
자연어 처리(NLP) - 어간 추출(Stemming), 표제어 추출(Lemmatization) (2) | 2023.03.16 |
자연어 처리(NLP) - 정수 인코딩(Integer Encoding) (0) | 2023.03.15 |