본문 바로가기

Languages/Python

정규표현식 re/compile/파이썬

정규표현식은 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용하는 형식 언어이다.

 

 

정규 표현식에서 사용하는 메타 문자는 다음과 같다.

. ^ $ * + ? { } [ ] \ | ( )

 

 

문자 클래스 [ ]


[ ] 사이의 문자들과 매치

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