research:pythonregularexpression
문서의 이전 판입니다!
파이썬 정규식 학습하기
파이썬에서 정규식 부분이 매우 강력해서 자주 쓰고는 있지만, 다양한 정규 표현식에 대해서는 그다지 익히지 못해 고급 표현에는 조금 약하다. 이번 문서에서 파이썬 re 모듈의 문서를 완전히 정리하도록 하자.
기본 기호
- '.' (닷) newline 문자를 제외한 어떤 문자. DOTALL 모드를 사용하면 newline도 포함한다.
- '^' (캐럿) 문자열의 시작. MULTILINE 모드면 newline 바로 다음도 인식한다.
- '$' 문자열의 마지막. 마찬가지로 MULTILINE 모드이면 newline바로 전도 인식한다.
- '*' 어떤 문자든 몇 번이든 매치되거나, 아예 안되어도 상관없다.
- '+' 어떤 문자든 1회이상 매치되어야 한다.
- '?' 매치가 0회, 1회
- *?, +?, ?? '*', '+', '?'는 모두 매치될 수 있을 만큼 매치한다. 이렇게 사용하면 가장 작은 매칭을 이용하게 된다.
- {m} 정확히 m번 반복하는 것만 매칭한다.
- {m, n} m회 이상 n회 이하의 반복을 매칭한다. n이 생략되면 상한선을 두지 않는다는 뜻이다. n을 생략하면 하한선을 두지 않으므로 0회 반복되어도 무방하다는 뜻이다.
- {m,n}? m회 이상 n회 이하의 반복이기는 하지만 가장 작은 매칭을 사용한다. 예를 들어 'aaaaaa' a가 6번 반복되는 문자열에서 a{3,5}를 찾으면 5개의 a를 찾을 것이고, a{3,5}?는 3개의 a를 찾을 것이다.
- \ 이스케이프 문자
- [] 이 안에 들어가는 문자 중 하나와 매칭.
- '-' 기호를 이용해 문자열 범위를 지정 가능. [0-9], [a-z]
- (, +, * 같은 기호들이 의미를 잃고 보통 문자열로 취급됨
- \w, \S 같은 문자들도 사용 가능.
- [^ 는 이 문자열 목록에 있지 않은 문자들만 매칭
- | A|B A여도 되고, B여도 되고. 이 때 A, B는 임의 길이의 스트링이다.
- ( ) 그룹을 만들 때 사용한다.
- (? ) 그룹의 확장 표현이다.
- (?iLmsux) 해당 부분에만 옵션을 적용할 때 사용한다. 옵션은 다음과 같다.
- i: ignore case
- L: locale-dependant
- m: multi-line
- s: dot matches all
- u: unicode dependant
- x: verbose
- (?P<name>…) 그룹을 name으로 접근 가능하다. 표현식에서 name은 1회만 나와야 한다. 패턴 자체를 재사용할 수 있다.
- 예를 들어
'(?P<quote>['“]).*?(?P=quote)
'라는 표현에서,- 패턴 자체를 참조할 때, (?P=quote) 혹은 \1 로 참조 되며,
- 매칭된 문자열에서는 m.group('quote')로 참조 가능하다.
- (?P=name) 이미 name으로 지정된 그룹을 참조할 때 사용한다.
- (?#….) 주석이다.
- (?=….) lookahead이다. 'Issac (?=Assimov)'란 표현을 사용하면 'Issac Assimov'에서 Issac만을 찾아낸다. 그러나 'Issac Newton'은 Newton이란 문자열은 Assimov랑 다르므로 매칭되지 않는다.
- (?!….) (?=…)와는 반대로 매칭되지 않는 것만을 찾아낸다.
research/pythonregularexpression.1389245136.txt.gz · 마지막으로 수정됨: 2014/10/09 21:23 (바깥 편집)