메타문자2
다른 메타문자
문자열 소비가 없는 메타 문자는 다음과 같습니다.
|
^
$
\A
\Z
\b
\B
메타문자 |
| 는 or와 동일한 의미로 사용된다. 'A|B' 라는 정규식의 경우 A 또는 B 가 됩니다.
import re
p = re.compoile('Crow|Servo')
m = p.match('CrowHello')
print(m) # <re.Match object; span=(0, 4), match='Crow'>
메타문자 ^
^ 는 문자열의 맨 처음과 일치함을 의미합니다. re.MULTILINE 옵션을 사용할 경우 여러줄의 문자열중 각각의 첫줄과 일치 하는 내용을 가져오게 됩니다.
import re
print(re.search('^Help', 'Help me now')) # <re.Match object; span=(0, 4), match='Help'>
print(re.search('^Help', 'you Help')) # None
^Help 정규식은 Help 문자열이 청므에 온 경우 매치하지만 처음 위치가 아닌 경우 매치되지 않습니다.
메타문자 $
$ 메타 문자는 **^**와 반대 경우이다. $는 문자열의 끝과 매치를 반환합니다.
import re
print(re.search('Help$', 'Help me now')) #None
print(re.search('Help$', 'your Help')) #<re.Match object; span=(5, 9), match='Help'>
help$ 정규식은 검색할 문자열이 short으로 끝난 경우 매치되지만 그외 경우에는 매치 되지 않습니다.
메타문자 \A
^ 메타 문자와 동일하지만 re.MULTILINE 옵션을 사용할 경우 다르게 해석되빈다.
re.MULTILINE 옵션을 사용할 경우
^ : 각줄의 문자열의 처음만 매치.
\A : 전체 문자열의 처음하고만 매치.
메타문자 \Z
|Z는 문자열의 끝과 매치됨을 의미합니다.
re.MULTILINE 옵션을 사용할 경우
$ : 각줄의 끝과 매치.
\Z :\A 와 동일하게 전체 문자열에서 매치 됩니다.
메타문자 \b
\b는 단어 구분자(Word Boundary)입니다. 단어를 파싱 하는 기준은 whitespace에 의해 구분됩니다.
import re
p = re.compile(r'\bclass\b')
print(p.search('no class at all')) # <re.Match object; span=(3, 8), match='class'>
\bclass\b 정규식은 앞뒤가 whiteSpace로 구분된 class라는 단어와 매치됩니다.
print(p.search('the declassified algorithm')) #None 을반환합니다.
주의할점 \b는 파이썬 맅너럴 규칙에 의해 백스페이스를 의미할 수 있으므로 Raw String의 기호 r을 반드시 붙여 주어야 합니다.
메타문자 \B
\B 메타문자는 \b 와 반대의 경우입니다. whitespace로 구분도니 단어가 아닌 경우에만 매치됩니다.
import re
p = re.compile(r'\Bclass\B')
print(p.search('no class at all')) # None
print(p.search('the declassified algorithm')) # <re.Match object; span=(6, 11), match='class'>
print(p.search('one subclass is')) # None
class 단어의 앞뒤에 공백이 있는경우에 매치가 되지 않습니다.
Last updated