Regular Expression
1. Regular Expression
- 텍스트에서 특정한 패턴을 찾기 위해 사용한다.
- 언어 처리하는 데에 정규식이 가장 빠르다.

2. Meta Characters
.: Any character*: Zero, one or more+: One or more?: Zero or one{}: Specified number of occurrences[]: Check any single character[-]: Range of characters[A-Z]: ABCD…Z[a-z]: abcd…z[ㄱ-ㅎ]: 자음[ㅏ-ㅣ]: 모음[가-힣]: 음절
[^]: Negation^: Beginning of string- ^x : SQL에서의 x%와 같다.
$: End of string- x$: SQL에서의 %x와 같다.
(): Grouping
3. Greedy vs. Lazy
- Greedy quantifier(탐욕적 수량자)
- 가능한 한 가장 큰 덩어리를 찾기 위해 텍스트 마지막에서 시작해 찾는다.
*,+,{n,}이 여기에 해당한다.
- Lazy quantifier(게으른 수량자)
- 가능한 한 최소로 일치하게 만든다.
- 기존 수량자 뒤에
?를 붙여 표현한다. *?,+?,{n,}?
| Greedy / Lazy | Greedy | Lazy |
|---|---|---|
| 예시 | python <b>AB</b> and <b>CD</b> |
|
| 정규표현식 | <[Bb]>.*<\/[Bb]> |
<[Bb]>.*?<\/[Bb]> |
| 결과값 | <b>AB</b> and <b>CD</b> |
<b>AB</b>, <b>CD</b> |
4. 파이썬 re 모듈
파이썬에서 정규표현식을 지원하기 위해 제공하는 모듈이다.
import re
(1) compile
p = re.compile('정규표현식')
re.compile()- 정규표현식을 컴파일한다.
- 컴파일 결과로 돌려주는 객체를 사용해 match(), search(), findall(), finditer() 작업을 수행할 수 있다.
- 정규식을 컴파일한 결과를 패턴이라고 한다.
(2) match, search, findall, finditer, sub
re.match()- 문자열의 처음부터 정규식과 매치하는지 조사
- 정규식과 매치되면 match 객체를, 매치되지 않으면 None을 반환한다.
re.search()- 문자열 전체를 검색해 정규식과 매치되는지 조사
- 정규식과 매치되면 match 객체를, 매치되지 않으면 None을 반환한다.
re.findall()- 정규식과 매치되는 모든 문자열(substring)을 리스트로 반환
re.finditer()- 정규식과 매치되는 모든 문자열(substring)을 반복 가능한 객체로 반환
re.sub()- 문자열에서 패턴과 매치하는 텍스트를 주어진 형태로 치환한다.
(3) match 객체의 메서드
match 객체는 re.match(), re.search()의 결과로 반환된 객체이다.
group()- 매치된 문자열을 반환
start()- 매치된 문자열의 시작 위치 반환
end()- 매치된 문자열의 끝 위치 반환
span()- 매치된 문자열의 (시작, 끝)을 나타내는 튜플 반환
Leave a comment