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