'.'(닷) 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=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 문자열의 끝.