복잡한 문자열을 간단하게 처리할 수 있다!
. ^ $ + ? { } [ ] \ | ( )[ ] : [ ] 사이의 문자들과 매치[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, abcimport 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 👍👍👍