지난 게시글에 이어서~
import re
'''
re 모듈은 파이썬을 설치할 때 자동으로 설치되는 표준 라이브러리
'''
pattern = re.compile('[a-z]+')
'''
pattern 객체에 정규표현식 컴파일함.
'''
정규식을 이용한 문자열 검색
- match() : 문자열의 처음부터 정규식과 매치되는지 조사 ( 매치안될 시 None 리턴)
- search() : 문자열 전체를 검색하여 정규식과 매치되는지 조사 (매치안될 시 None 리턴)
- findall() : 정규식과 매치되는 모든 문자열(substring)을 리스트로 리턴
- finditer() : 정규식과 매치되는 모든 문자열(substring)을 반복 가능한 객체로 리턴
match와 serach
pattern = re.compile('[a-z]+')
m = pattern.match('3python')
s = pattern.search('3python')
if m :
print('Match found : ', m.group())
print(m)
else:
print('No match')
if s :
print('Search find : ',s.group())
print(s)
else:
print('No search')
# 출력
No match
Search find : python
<re.Match object; span=(1, 7), match='python'>
match 객체의 메서드
- group : 매치된 문자열을 리턴
- start : 매치된 문자열의 시작 위치를 리턴
- end : 매치된 문자열의 끝 위치를 리턴
- span : 매치된 문자열의 (시작, 끝) 에 해당하는 튜플을 리턴
findall 과 finditer
pattern = re.compile('[a-z]+')
f = pattern.findall('SHINee is Bling Bling ~~!!')
print(f)
#출력
['ee', 'is', 'ling', 'ling']
pattern = re.compile('[a-z]+')
fi = pattern.finditer('SHINee is Bling Bling ~~!!')
print(fi)
for i in fi :
print(i)
# 출력
<callable_iterator object at 0x000001AFF656CD30>
<re.Match object; span=(4, 6), match='ee'>
<re.Match object; span=(7, 9), match='is'>
<re.Match object; span=(11, 15), match='ling'>
<re.Match object; span=(17, 21), match='ling'>
finditer는 findall과 동일하지만, 그 결과로 반복가능한 객체(iterator object)를 리턴.
또한 반복 가능한 객체가 포함하는 각각의 요소는 match 객체임
+ 컴파일과 메서드 동시에 시행하는 방법
p = re.compile('[a-z]+')
m = p.match('python')
m = re.match('[a-z]+','python')
컴파일 옵션
- DOTALL(S) : .(dot)이 줄바꿈 문자를 포함해 모든 문자와 매치될 수 있게 함.
- IGNORECASSE(I) : 대소문자에 관계없이 매치될 수 있게 함
- MULTILINE(M) : 여러 줄과 매치될 수 있게 함 . ^,$ 메타문자 사용과 관계 있는 옵션
- VERBOSE(X) : verbose 모드를 사용할 수 있게 함. 정규식을 보기 편하게 만들 수 있고 주석 등을 사용할 수 있음
*() 괄호 안에 있는 문자는 해당 옵션의 약어
DOTALL , S
p = re.compile('a.b', re.DOTALL)
m = p.match('a\nb')
print(m)
# 출력
<re.Match object; span=(0, 3), match='a\nb'>
▶ 여러 줄로 이루어진 문자열에서 줄바꿈 문자에 상관없이 검색할 때 많이 사용 / re.DOTALL = re.S
IGNORECASE, I
p = re.compile('[a-z]+', re.I)
p.match('python')
# 출력
<re.Match object; span=(0, 6), match='python'>
p.match('Python')
# 출력
<re.Match object; span=(0, 6), match='Python'>
p.match('PYTHON')
# 출력
<re.Match object; span=(0, 6), match='PYTHON'>
아 힘들어 나중에 이어서 다시 작성할게요...
'🏷️CS > Python' 카테고리의 다른 글
f-string 응용하기 (0) | 2023.08.05 |
---|---|
[for 와 else 를 같이 사용] (0) | 2023.07.31 |
[assert 가정 설정문] (1) | 2023.07.10 |
[다차원 배열 초기화 방법의 차이점] (1) | 2023.05.13 |
[anaconda 가상환경] (0) | 2023.01.07 |