re 모듈
- regular expression의 약어
- 파이썬 설치시 자동 설치되는 기본 라이브러리
import re
p = re.compile('ab*')
- re.compile을 사용하여 정규표현식 컴파일
- re.compile의 결과로 돌려주는 객체를 사용하여 그 이후의 작업 수행
정규식을 이용한 문자열 검색
- 컴파일된 패턴 객체가 제공하는 메서드
method |
목적 |
match() |
문자열의 처음부터 정규식과 매치되는지 조사 |
search() |
문자열 전체를 검색하여 정규식과 매치되는지 조사 |
findall() |
정규식과 매치되는 모든 문자열을 리스트로 반환 |
finditer() |
정규식과 매치되는 모든 문자열을 반복 가능한 객체로 반환 |
예
import re
p = re.compile('[a-z]+')
match 메서드 수행
m = p.match("python")
print(m)
# 정규식에 부합
>> <_sre.SRE_Match object at 0x01F3F9F8>
m = p.match("3 python")
print(m)
# 문자3이 정규식에 부합 X
>> None
- match의 결과로 match객체 또는 None을 돌려주므로 보통 다음과 같은 흐름으로 작성
p = re.compile(정규표현식)
m = p.match('string goes here')
if m:
print('Match found: ', m.group())
else:
print('No match')
search 메서드 수행
m = p.search("python")
print(m)
>> <_sre.SRE_Match object at 0x01F3FA68>
m = p.search("3 python")
print(m)
>> <_sre.SRE_Match object at 0x01F3FA30>
findall 메서드 수행
result = p.findall("life is too short")
print(result)
>> ['life', 'is', 'too', 'short']
finditer
result = p.finditer("life is too short")
print(result)
>> <callable_iterator object at 0x01F5E390>
for r in result: print(r)
>> ...
<_sre.SRE_Match object at 0x01F3F9F8>
<_sre.SRE_Match object at 0x01F3FAD8>
<_sre.SRE_Match object at 0x01F3FAA0>
<_sre.SRE_Match object at 0x01F3F9F8>
match 객체의 메서드
- 어떤 문자열이 매치되었는지, 매치된 문자열의 인덱스는 어디서부터 어디까지인지 확인
method |
목적 |
group() |
매치된 문자열 반환 |
start() |
매치된 문자열의 시작 위치 반환 |
end() |
매치된 문자열의 끝 위치 반환 |
span() |
매치된 문자열의 (시작, 끝)에 해당하는 튜플 반환 |
- 예
m = p.match("python")
print(m.group())
print(m.start())
print(m.end())
print(m.span())
>> 'python'
>> 0
>> 6
>> (0, 6)
- search 메서드와 비교
m = p.search("python")
print(m.group())
print(m.start())
print(m.end())
print(m.span())
>> 'python'
>> 2
>> 8
>> (2, 8)
[re 모듈]
p = re.compile('[a-z]+')
m = p.match("python")
위 코드의 축약
m = re.match('[a-z]+', "python")
컴파일 옵션
DOTALL(S)
- .
이 줄바꿈 문자를 포함하여 모든 문자와 매치할 수 있도록
IGNORECASE(I)
- 대소문자 관계없이 매치
MULTILINE(M)
- 여러줄과 매치할 수 있도록(^
, $
메타문자의 사용과 관계가 있는 옵션)
VERBOSE(X)
- verbose 모드를 사용할 수 있도록(정규식을 보기 편하게, 주석 사용 가능하게)
'인문학도 개발일지 > 웹프로그래밍' 카테고리의 다른 글
Build a Backend REST API with Python & Django - 프로젝트 기본 설정 (0) | 2020.07.28 |
---|---|
Build a Backend REST API with Python & Django - 사용 기술 (0) | 2020.07.28 |
[python] 점프 투 파이썬 정규표현식 기초 - 메타문자 (0) | 2020.07.11 |
[NLP] 자연어처리 - 개요 및 작업 환경 갖추기 (0) | 2020.04.12 |
[파이썬][웹크롤링] 도널드 트럼프 트위터 크롤링하기 (15) | 2020.04.12 |