재사용할 패턴 컴파일하기
re.compile(pattern)은 .search, .findall, .sub 같은 메서드를 가진 패턴 객체를 반환해. 같은 패턴을 여러 곳에서 쓴다면 이름을 붙인 객체 하나로 의도를 분명하게 드러낼 수 있어.
모듈 수준의 re.search 같은 함수도 최근 사용한 패턴을 내부에서 캐시하므로, 명시적인 컴파일이 언제나 더 빠른 것은 아니야. 성능을 추측하기보다 반복해서 쓸 중요한 패턴을 한곳에 정의하고, 필요하면 실제 작업량으로 측정해.
VERBOSE 플래그
re.VERBOSE의 별칭은 re.X야. 이 플래그를 사용하면 공백과 주석을 넣은 여러 줄 패턴을 작성할 수 있어.
- 문자 클래스 밖의 공백은 무시돼. 실제 공백을 매칭하려면
\s,\, 또는 문자 클래스를 사용해. - 문자 클래스 밖의 이스케이프되지 않은
#부터 줄 끝까지는 주석이 돼.
긴 패턴의 구획과 의도를 눈에 보이게 만들 때 특히 유용해.
플래그 결합하기
re.compile(pattern, re.VERBOSE | re.MULTILINE | re.IGNORECASE)처럼 | 연산자로 여러 플래그를 결합할 수 있어.
인라인 플래그
패턴 시작의 (?ix)는 패턴 전체에 IGNORECASE와 VERBOSE를 적용해. (?ix:...)처럼 범위를 묶으면 특정 구간에만 플래그를 적용할 수도 있어.