import re
result = re.match('Lux', 'Lux, the Lady of Luminosity')
메타 문자란 문자가 가진 원래의 의미가 아닌 특별한 용도로 사용되는 문자를 말한다. 정규표현식에서 사용되는 메타 문자는 다음과 같다.
. ^ $ * + ? \ | ( ) { } [ ]
[] 문자 클래스
\d 숫자 [0-9]와 같다.
\D 비숫자 [^0-9]와 같다.
\w 숫자 + 문자 [a-zA-Z0-9]와 같다.
\W 숫자 + 문자가 아닌 것 [^a-zA-Z0-9]와 같다.
\s 공백 [ \t\n\r\f\v]와 같다.
\S 비공백 [^ \t\n\r\f\v]와 같다.
\b 단어 경계 (\w
와\W
의 경계)
\B 비단어 경계
매치 객체의 메서드
메서드
group() 매치된 문자열 출력
start() 매치 시작지점 인덱스 출력
end() 매치 끝지점 인덱스 출력
span() (start(), end())를 튜플로 출력
() 그룹화
-Python에서 정규표현식에 \ 을 사용할 때 아래와 같은 문제가 발생할 수 있다.
text = '\section'
result = re.match('\\section', text)
print(result)
#none
-\s는 공백문자를 뜻하는 메타문자로 인식되기 때문에 \section 이라는 문자열을 찾으려면 위해 이스케이프 코드 \를 사용한 \section 를 정규표현식에 입력해야한다.
그러나 Python 정규식 엔진에서 리터럴 규칙에 의해 \ 가 \로 해석되어 전달된다.
따라서 \ 를 문자 그대로 넘겨주어야하는데 이를 위해서는 \\ 로 입력해야한다.
text = '\section'
result = re.match('\\\\section', text)
print(result)
#<_sre.SRE_Match object; span=(0, 8), match='\\section'>
text = '\section'
result = re.match(r'\\section', text) # raw string을 뜻하는 r을 앞에 붙여준다.
print(result)
#<_sre.SRE_Match object; span=(0, 8), match='\\section'>
- 정규표현식 앞에 r은 항상 붙여주는 것이 권장된다.