정규 표현식에서는 메타 문자들을 사용하여 특별한 의미를 갖게한다.
. ^ $ * + ? { } \ | ( )
문자 클래스 [ ]
문자 클래스로 만들어진 정규식은 [ ] 사이의 문자들과 매치한다는 의미이다
예제를 통해 자세하게 이해해보자
정규표현식이 [abc]라면 a,b,c 중 한 개의 문자와 매치된다
[a-z]와 같이 하이픈을 사용하게 되면 두 문자 사이의 범위를 의미한다
[a-zA-Z]: 알파벳 모두를 의미
[0-9]: 숫자를 의미
[^0-9]: 숫자가 아닌 문자만 매치
위와 같은 표현들은 자주 사용하는 정규 표현식이기 때문에 별도의 표기법으로 더 간단하게 사용할 수 있다.
\d: 숫자와 매치
\D: 숫자가 아닌 것과 매치
\s: whitespace 문자와 매치
\S: whitespace 문자가 아닌 것과 매치
\w: 문자와 숫자와 매치
\W: 문자와 숫자가 아닌 문자와 매치
※ 대문자로 사용된것은 소문자의 반대이다
Dot(.): . 메타문자는 줄바꿈 문자인 \n을 제외한 모든 문자와 매치됨을 의미한다
a.b: a와 b라는 문자 사이에 어떤 문자가 들어가도 모두 매치된다
a.b | aab | Yes | |
a0b | Yes | ||
abc | No | a와 b 문자 사이에 어떤 문자라도 하나는 있어야 해서 일치x |
a[.]b: [] 내에 .은 문자 . 그대로를 의미한다
반복(*)
* 바로 앞에 있는 문자가 0부터 무한대로 반복될수있다는 의미다
ca*t 하게 되면 ct, cat, caaat 모두 매치된다
반복(+)
최소 1번이상 반복될때 사용
ca+t | ct | No | |
cat | Yes | ||
caaat | Yes |
반복({m,n},?)
반복 횟수를 정해놓고 사용
ca{2}t: a가 2번 반복되면 매치
ca{2,5}t: a가 2~5번 반복되면 매치
ab?c: b가 0~1번 사용되면 매치
파이썬 re 모듈
match(): 문자열의 처음부터 정규식과 매치되는지 조사
search(): 문자열 전체를 검색하여 정규식과 매치되는지 조사
findall(): 정규식과 매치되는 모든 문자열을 리스트로 리턴한다
finditer(): 정규식과 매치되는 모든 문자열을 반복 가능한 객체로 리턴한다
import re
p=re.compile('[a-z]+')
m=p.match('python')
if m:
print(m.group())
else:
print('No Match')
#search
m=p.search('python')
print(m)
#findall
result=p.findall('life is too short')
print(result)
#finditer
result=p.finditer('life is too short')
print(result)
for r in result: print(r)
match 객체의 메서드
group(): 매치된 문자열 리턴
start(): 매치된 문자열의 시작 위치
end(): 매치된 문자열의 끝 위치
span(): 매치된 문자열의 (시작,끝)에 해당되는 튜플 리턴
'BackEnd > 파이썬' 카테고리의 다른 글
파이썬 정규표현식 괄호 내부 문자 추출하기 (0) | 2023.04.07 |
---|---|
[파이썬] 개발툴에서 파이썬으로 엑셀 작업하기 (0) | 2023.02.23 |
[파이썬] 내장함수 filter (0) | 2023.02.16 |
[파이썬] 파이썬 formatting 방식 (0) | 2023.02.06 |
[파이썬] 2차원 리스트 깊은복사 (0) | 2023.02.06 |
댓글