728x90
메타문자
원래 그 문자가 가진 뜻이 아닌 특별한 용도로 사용하는 문자
. ^ $ * + ? { } [ ] \ | (
문자 클래스 [ ]
[abc] 라면 "a,b,c" 중 한 개의 문자와 매치
[a-c] 가 [abc]랑 같다.
- [a-zA-Z] : 알파벳 모두
- [0-9] : 숫자
- [^0-9] : 숫자 아닌 문자만
자주 사용하는 문자 클래스
- \d - 숫자와 매치, [0-9] 와 같음
- \D - 숫자 아닌 것과 매치, [^0-9]
- \s - whitespace 문자와 매치, [ \t\n\r\f\v] 와 같음
- \S - whitespace 문자가 아닌 것과 매치
- \w - 문자 + 숫자와 매치 [a-zA-Z0-9] 와 같음
Dot(.)
줄바꿈 문자인 \n 을 제외한 모든 문자와 매치됨.
a.b
# "a+ 모든 문자 + b"
a와 b라는 문자 사이에 어떤 문자가 들어와도 매치된다.
반복
*, +, {m,n}, ?
# a가 0부터 무한번 반복 가능
ca*t
# a가 1부터 무한번 반복 가능
ca+t
# 반복 ({m,n},?)
# a 2번 반드시 반복
ca{2}t
# a 2~5번 반복
ca{2,5}t
# {0,1} 반복, ? : 있어도 되고 없어도 된다.
ca?t
re 모듈
import re
p = re.compile('ab*')
정규식 표현을 컴파일해 돌려주는 객체 p를 이용해 문자열 검색에 사용한다.
정규식을 이용한 문자열 검색
- match() : 문자열의 처음부터 정규식과 매치되는지 조사
- search() : 문자열 전체를 검색해 정규식과 매치되는지 조사
- findall() : 정규식과 매치되는 모든 문자열을 리스트로 돌려줌
- finditer() : 정규식과 매치되는 모든 문자열을 반복 가능한 객체로 돌려줌