정규표현식은 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용하는 형식 언어이다.
정규 표현식에서 사용하는 메타 문자는 다음과 같다.
. ^ $ * + ? { } [ ] \ | ( )
문자 클래스 [ ]
[ ] 사이의 문자들과 매치
ex) [abc] -> a,b,c 중 한 개의 문자와 매치
"a" : a가 있으므로 매치
"before" : b가 있으므로 매치
"dude" : a,b,c 중 하나도 포함하고 있지 않으므로 매치되지 않음
[ ] 안의 두 문자 사이에 '-' 사용하면 문자 사이의 범위를 의미한다.
ex) [a-c] = [abc] , [0-5] = [012345]
- [a-zA-Z] : 알파벳 모두
- [0-9] : 숫자
문자 클래스 [] 안에서 ^ 메타 문자를 주의해야한다. ^를 사용하면 반대라는 의미를 가진다.
ex) [^0-9] : 숫자가 아닌 문자만 매치
[자주 사용하는 문자 클래스]
- \d = [0-9] : 숫자와 매치
- \D = [^0-9] : 숫자가 아닌 것과 매치
- \s = [ \t\n\r\f\v] : whitespace 문자와 매치, 맨 앞의 빈 칸은 공백문자 의미
- \S = [^ \t\n\r\f\v] : whitespace 문자가 아닌 것과 매치
- \w = [a-zA-Z0-9] : 문자+숫자와 매치
- \W = [^a-zA-Z0-9] : 문자+숫자 아닌 것과 매치
Dot(.)
줄바꿈 문자인 \n을 제외한 모든 문자와 매치
ex) a.b -> a + 모든문자 + b
"aab"는 ab사이에 a가 있으므로 매치
"a0b"는 ab사이에 0이 있으므로 매치
"abc"는 ab사이에 아무 문자도 없으므로 매지되지 않음
cf) a[.]b -> a+'.'+b
"aab", "a0b"와는 매치되지 않음
"a.b"와 매치
반복 (*)
* 바로 앞에 있는 문자가 0번이상 반복될 때 매치
ca*t # a가 0무터 무한대로 반복가능
ct # a가 0번 반복되어 매치
cat # a가 0번 이상 반복되어 매치
caaat # a가 0번 이상 반복되어 매치
반복 (+)
+ 바로 앞에 있는 문자가 1번이상 반복될 때 매치
ca+t
ct # a가 1번 이하로 반복되어 매치되지 않음
cat # a가 1번 이상 반복되어 매치
caaat # a가 1번 이상 반복되어 매치
반복 ({m,n} , ?)
{m,n} : m~n회 반복될 때 매치
ca{2}t #c + a(반드시 2번 반복) + t
ca{2,5}t #c + a(2~5회 반복) + t
? : 있거나 없거나 둘다 매치
ab?c # a + b(있어도 되고 없어도 된다) + c
abc # b가 1번 사용되어 매치
ac # b가 0번 사용되어 매치
'Languages > Python' 카테고리의 다른 글
[Python] 트리 (0) | 2022.01.16 |
---|---|
[python] 투 포인터(Two Pointers) 알고리즘 (2) | 2022.01.14 |
힙 / 힙큐(heapq) (0) | 2021.08.03 |
파이썬 스택, 큐 (0) | 2021.07.22 |
Hash(해시) (0) | 2021.07.17 |