메타 문자란?
원래 가진 뜻이 아닌 특별한 용도로 사용하는 문자.
따라서 아래 문자들을 정규 표현식에 사용하면 메타문자로써 특별한 의미를 갖게 된다
. ^ $ * + ? { } [ ] \ | ( )
[ ] (문자 클래스)
뜻은 [ ] 사이의 문자들과 매치
들어가는 값은 어떤 문자든 상관없다
[abc] --> a, b, c 중 1개의 문자
[a-z] --> a~z
[A-Z] --> A~Z
[a-zA-Z] --> 모든 알파벳
[0-9] --> 모든 숫자
위의 예시처럼 하이픈을 사용해서 두 문자 사이의 범위를 나타내기도 한다
문자 클래스 안에는 어떤 문자나 메타문자도 사용할 수 있다 (^는 제외 이유는 후술)
알파벳 전체나 숫자 전체같은 것들은 자주 사용하기 때문에 별도의 표기법으로 사용가능하다
\d = [0-9]
\D = [^0-9]
\s = [ \t\n\r\f\v]
\S = [^ \t\n\r\f\v]
\w = [a-zA-Z0-9_]
\W = [^a-zA-Z0-9_]
척 봐도 \대문자는 \소문자와 반대인 것을 알 수 있다
. (Dot)
닷은 \n을 제외한 모든 문자와 매치된다
물론 특정한 옵션을 주면 \n 문자와도 매치가 된다(어떤 옵션인지는 후술)
a.b >>> a + 모든 문자 + b
a[.]b >>> a.b #여기서의 dot은 문자열 .으로 인식된다
* (반복)
에스터리스크는 에스터리스크 바로 앞의 문자의 반복을 의미한다
반복횟수는 0부터 무한대다
(사실 무한대가 아니라 메모리 문제로 2억개 정도가 한계라고 한다)
ab*c 와 매치되는 문자열
>>> ac # b가 0개
>>> abc # b가 1개
>>> abbbbbbbbbbbbbbbbbbbbbbbbbc
+ (반복)
아니 의사양반 반복이 2개라니..
걱정마시라 차이가 있으니
에스터리스크와 플러스가 다른 점은
플러스는 반복되지 않은 것은 매치시키지 않는다는 것이다
ab+c 와 매치되는 문자열
>>> abc
>>> abbbbbbbbbbbbbbbbbbbbbbbbbc
위 예시로 알 수 있듯 플러스는 문자열이 1번 이상 반복 되어야 한다
?
앞의 문자열이 없어도 매치시키고 1개 있어도 매치시킨다
단, 2번 이상 반복된다면 매치시키지 않는다
ab?c
>> ac, abc 만 매치
>> a, c, abbc, 는 매치 안 됨
{ } (반복)
아니 의사양반 반복이 또 있어?
물론 차이가 또 있다 중괄호 내의 내용에 따라 특정 횟수 이상, 이하, 또는 사이의 반복만을 매치시킨다
예시로 차이를 알아보자
ab{2}c #b가 2개일 때만 매치
>> abbc 와는 매치
>> ac abc abbbc 와는 매치 안 됨
ab{2,}c #b가 2개 이상일 때만 매치
>> ac, abc 와는 매치 안 됨
>> abbc, abbbbbbc 와는 매치
ab{,3}c #b가 3개 이하일 때만 매치
>> ac, abbc, abbbc 매치 됨
>> abbbbc, abbbbbbbbbbc 와는 매치 안 됨
ab{2,6}c #b가 2개이상 6개 이하일 때만 매치
>> ac, abc, abbbbbbb 매치 안 됨
>> abbc, abbbbc, abbbbbbc 매치
중괄호 특성 상 앞에 나온 *, +, ? 을 모두 표현할 수 있다
ab*c = ab{0,}c
ab+c = ab{1,}c
ab?c = ab{0,1}c
'dev > python' 카테고리의 다른 글
[python] 자료형 - List 관련 함수 (0) | 2022.03.13 |
---|---|
[python] 자료형 - List (0) | 2022.02.21 |
[python] 함수의 결과는 언제나 하나다? (0) | 2022.02.17 |
[python] 함수 - *args, **kwargs (0) | 2022.02.16 |
[python] 함수 - 일반적이지 않은 함수 (0) | 2022.02.07 |