내용으로 건너뛰기
ChangwooWiki
사용자 도구
로그인
사이트 도구
검색
도구
문서 보기
이전 판
역링크
최근 바뀜
미디어 관리자
사이트맵
로그인
>
최근 바뀜
미디어 관리자
사이트맵
추적:
research:pythonregularexpression
이 문서는 읽기 전용입니다. 원본을 볼 수는 있지만 바꿀 수는 없습니다. 문제가 있다고 생각하면 관리자에게 문의하세요.
====== 파이썬 정규식 학습하기 ======= 파이썬에서 정규식 부분이 매우 강력해서 자주 쓰고는 있지만, 다양한 정규 표현식에 대해서는 그다지 익히지 못해 고급 표현에는 조금 약하다. 이번 문서에서 [[http://docs.python.org/2/library/re.html|파이썬 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랑 다르므로 매칭되지 않는다. * (?!....) (?=...)와는 반대로 매칭되지 않는 것만을 찾아낸다. * %%(?<=...)%% ...안의 문자열로 시작하면 매칭한다. ''(?<=abc)def''라는 표현에서 'abcdef'를 찾으면 def를 매칭한다. * (?<!...) ...안의 문자열로 시작하지 않으면 매칭한다. * (?(id/name)yes-pattern|no-pattern) id/name이 있으면 yes-pattern을, 아니면 no-pattern을 평가한다. no-option은 선택적이다. * \숫자 그룹 번호를 참조할 때 사용한다. * \A 문자열의 처음과 매칭된다. * \b 빈문자와 매칭되나 단어의 앞뒤에만 적용된다. 예를 들어 r'\bfoo\b'를 쓰면 'foo', 'foo.', 'bar foo baz'와는 매칭되나, 'foobar'와는 매칭되지 않는다. * \B \b의 반대 케이스로 빈 문자와 매칭되지만, 단어의 앞뒤에는 적용되지 않는다. 예를 들어 r'py\B'는 'python', 'py3', 'py2'와는 매칭되나, 'py', 'py.', 'py!'와는 매칭되지 않는다. * \d 숫자와 매칭된다. [0-9]와 같다 * \D 숫자가 아닌 것들과 매칭된다. [^0-9]와 같다. * \s 공백 문자들. [ \t\n\r\f\v] * \S 공백 문자가 아닌 문자들. * \w 알파벳, 숫자, 언더스코어들 말한다. LOCALE, UNICODE가 사용되면 알파벳은 영향을 받는다. * \W non-alphanumeirc * \Z 문자열의 끝. ===== 참고 사이트 ===== * http://regexpal.com/ 정규식 연습. 일부 지원되지 않는 표현도 있다.
research/pythonregularexpression.txt
· 마지막으로 수정됨: 2014/10/09 21:24 저자
127.0.0.1
문서 도구
문서 보기
이전 판
역링크
맨 위로