
복잡한 문자열을 판단할 때 사용한다
파이썬에서는 내장 라이브러리인 re 모듈을 제공하여 정규표현식을 확인해 볼 수 있다
import re
re.match()
1. 정규식 문법
| : 특정 문자열에서 지정된 문자열(문자)이 하나라도 포함 = or[] : 문자열 집합, []에 해당되는 문자와 매치한다() : 여러 패턴을 하나로 묶을 수 있다- : []내에 -을 넣어 두 문자 간의 범위를 만들 수 있다([From - to]). : 줄바꿈(\n)을 제외한 모든 문자* : *에서 앞에 있는 문자가 0번 이상 반복+ : +에서 앞에 있는 문자가 1번 이상 반복{m} : {m}에서 앞에 있는 문자가 m번 반복{m, n} : {m, n}에서 앞에 있는 문자가 m~n번 반복? : ?에 있는 문자가 0개이거나 1개 = {0, 1}^ : 문자열이나 행의 처음$ : 문자열이나 행의 마지막2. 문자열 검색
| Method | 목적 |
|---|---|
| Match('패턴', '문자열') | 시작부문에서 문자열에서 일치하는 정규식이 있는지 검색 일치하지 않으면 None을 반환 |
| Search('패턴', '문자열') | 문자열 전체에서 일치하는 정규식이 있는지 검색 |
| Findall('패턴', '문자열') | 문자열에서 겹치지 않는 패턴의 모든 일치를 문자열 리스트로 반환한다 |
| Finditer('패턴', '문자열') | 문자열에서 겹치지 않는 패턴을 이터레이터로 반환한다 |
객체 = re.compile('정규표현식')를 지정하여 반복적인 정규표현식을 작성하는 것을 줄일 수 있다
3. 문자 클래스
| 문자클래스 | ASCII |
|---|---|
| \d | [0-9] 모든 숫자 |
| \D | [^0-9] 숫자를 제외한 모든 숫자 |
| \w | [a-zA-z0-9_]영문 대소문자, 숫자, 밑줄 |
| \W | [^a-zA-Z0-9_]영문 대소문자, 숫자, 밑줄를 제외한 모든 문자 |
👇공백처리
| 문자클래스 | ASCII |
|---|---|
| \s | [\t\n\r\f\v] 공백, \t(tap), \n(새 줄,Line Feed), \r(Carriage Return), \f(Form feed) |
| \S | [^\t\n\r\f\v] 공백을 제외하고 \t(tap), \n(새 줄,Line Feed), \r(Carriage Return), \f(Form feed) |
4. Match 객체의 method
| method | 설명 |
|---|---|
| group() | 그룹에 매치된 문자열을 반환한다 |
| groups() | 그룹에 매치된 문자열을 Tuple로 반환한다 |
| start() | 매치된 문자열의 시작 위치를 반환한다 |
| end() | 매치된 문자열의 끝 위치를 반환한다 |
| span() | 매치된 문자열의 (시작, 끝)에 해당되는 Tuple를 반환한다 |
✨Grouping
()을 사용하여 Grouping을 할 수 있다
👇예시

index를 통하여 해당 그룹을 가져올 수 있다
0이나 아무것도 지정하지 않으면 매치된 문자열을 반환한다
(?P<group<그룹이름>패턴)을 이용하여 그룹에 이름을 정해 편리하게 가져올 수 있다
정규식 안에서(?P=그룹이름)으로 재참조가 가능하다
5. Compile Option
import re
p = re.compile('패턴', 'Compile Option')
^, $과 관련)