복잡한 문자열을 간단하게 처리할 수 있다!
. ^ $ + ? { } [ ] \ | ( )
[ ]
: [ ]
사이의 문자들과 매치[abc]
: a, b, c[a-c]
: a부터 c까지 (= a, b, c)[a-zA-Z]
: 알파벳 모두[0-9]
= [\d]
: 숫자[^0-9]
= [\D]
: 숫자가 아닌 것[\s]
= [ \t\n\r\f\v]
: whitespace 문자 (공백을 표현하는 문자들)[\S]
= [^ \t\n\r\f\v]
: whitespace 문자가 아닌 것[a-zA-Z0-9_]
= [/w]
: 숫자 + 문자[^a-zA-Z0-9_]
= [/W]
: 숫자 + 문자가 아닌 문자Dot(.)
: 줄바꿈 문자인 \n
을 제외한 모든 문자[a.b]
: a + 모든 문자 + b => 즉, azb
, a5b
는 매치, abc
는 매치X*
: *
바로 앞에 있는 문자가 0~무한대 반복될 수 있다.[to*p]
: tp
, top
, toooooop
+
: *
바로 앞에 있는 문자가 1~무한대 반복될 수 있다. (최소 1번!){m,n}
: 반복 횟수 범위 설정ca{2,3}t
: caat
, {caaat}
?
: 있어도 되고 없어도 되고 = {0, 1}과 같은 의미ab?c
: ac
, abc
import re
p = re.compile('ca{2,5}t')
Method | 목적 |
---|---|
match() | 문자열의 처음부터 정규식과 매치되는지 조사한다. (매치 => match 객체, 매치 X => None 반환) |
search() | 문자열 전체를 검색하여 정규식과 매치되는지 조사한다. (매치 => match 객체, 매치 X => None 반환) |
findall() | 정규식과 매치되는 모든 문자열(substring)을 리스트로 돌려준다. |
finditer() | 정규식과 매치되는 모든 문자열(substring)을 반복 가능한 객체(각 요소는 match 객체)로 돌려준다. |
match()
search()
findall()
finditer()
Method | 목적 |
---|---|
group() | 매치된 문자열을 돌려준다. |
start() | 매치된 문자열의 시작 위치를 돌려준다. |
end() | 매치된 문자열의 끝 위치를 돌려준다. |
span() | 매치된 문자열의 (시작, 끝)에 해당하는 튜플을 돌려준다. |
p = re.compile("[a-z]+")
m = p.match("regex")
m = re.match("[a-z]+", "regex")
📕 참고 자료: https://wikidocs.net/4308 👍👍👍