복잡한 문자열을 판단할 때 사용한다
파이썬에서는 내장 라이브러리인 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')
^
, $
과 관련)