: 파이썬은 정규표현식을 지원하기 위해 regular expression(re) 모듈을 제공함(기본 라이브러리, 설치 필요 없음)
import re 로 모듈을 사용하며,
p = re.complie('ab*) 와 같이 정규표현식을 컴파일한다.
반환값은 p(컴파일된 패턴 객체)이다.
컴파일된 패턴 객체를 사용해 문자열을 검색할 수 있다.
패턴객체가 제공하는 4가지 메서드
| 메서드 | 설명 |
|---|---|
match() | 문자열의 처음부터 정규식과 매치되는 지 조사하고, 매치되면? match객체 : None 반환 |
search() | 문자열 전체를 검색하여 정규식과 매치되는 지 조사하고, 매치되면? match객체 : None 반환 |
findall() | 정규식과 매치되는 모든 문자열을 리스트로 반환 |
finditer() | 정규식과 매치되는 모든 문자열을 반복가능한 객체로 반환 |
p = re.compile('[a-z]+') # compile이 패턴 객체 p 반환
m = p.match("python") # p.match로 문자열("python") 검사
# "python"은 [a-z]+에 부합하므로 match객체를 반환
print(m) # 확인해보면
>> <re.match object; span=(0,6), match='python'>
m = p.match("3 python") # p.match로 문자열("3 python") 검사
# "3 python"은 처음에 나오는 '3'이 [a-z]+에 부합하지 않으므로 None을 반환
print(m) # 확인해보면
>> None
p = re.compile('[a-z]+') # compile이 패턴 객체 p 반환
m = p.search("python") # p.search 문자열("python") 검사
# "python"은 [a-z]+에 부합하므로 match객체를 반환
print(m) # 확인해보면
>> <re.match object; span=(0,6), match='python'>
m = p.search("3 python") # p.search로 문자열("3 python") 검사
# "3 python"은 처음은 '3'이지만 전체를 검색하기 때문에 뒤에 있는 'python'이 [a-z]+에 부합하므로 match객체를 반환
print(m) # 확인해보면
>> <re.match object; span=(2, 8), match='python'>
# compile이 패턴 객체 p 반환
p = re.compile('[a-z]+')
result = p.findall("life is too short")
print(result)
>> ['life', 'is', 'too', 'short']
# 문자열에서 [a-z]+에 부합하는 문자열을 리스트로 반환
# compile이 패턴 객체 p 반환
p = re.compile('[a-z]+')
result = p.finditer("life is too short")
print(result)
# 문자열에서 [a-z]+에 부합하는 문자열을 반복가능한 객체로 반환
>> <callable_iterator object at 0x01F5E390>
# 반복문으로 확인해보면
for r in result: print(r)
>> <re.Match object; span=(0, 4), match='life'>
>> <re.Match object; span=(5, 7), match='is'>
>> <re.Match object; span=(8, 11), match='too'>
>> <re.Match object; span=(12, 17), match='short'>
# match객체를 요소로 가지는 반복가능 객체를 반환
p = re.compile('[a-z]+')
m = p.match("python")
를 전제로
group() : 매치된 문자열 반환 m.group()
>> 'python'
start() : 매치된 문자열의 시작 위치 반환 m.start()
>> 0
end() : 매치된 문자열의 끝 위치 반환 m.end()
>> 6
span() : 매치된 문자열의 (시작, 끝)에 해당하는 튜플 반환 m.span()
>> (0, 6)
p = re.compile('[a-z]+')
m = p.search("3 python")
를 전제로
group() : 매치된 문자열 반환 m.group()
>> 'python'
start() : 매치된 문자열의 시작 위치 반환 m.start()
>> 2
end() : 매치된 문자열의 끝 위치 반환 m.end()
>> 8
span() : 매치된 문자열의 (시작, 끝)에 해당하는 튜플 반환 m.span()
>> (2, 8)
이러하다
글 하나 정리하는 데에 생각보다 시간이 많이 드는 것 같다. 빠르게 집중해서 끝낼 수 있도록 이것도 연습이 필요할 듯..