1. 문자 클래스 (character class)
[ ]
# 모든 영문의 소문자
[a-z]
# 모든 영문의 소문자와 대문자
[a-zA-Z]
# 모든 숫자
[0-9]
# 모든 숫자가 아닌 문자
[^0-9]
+ 자주 사용하는 문자 클래스
# 숫자와 매치됨.
\d
# = [0-9]
# 숫자가 아닌 것과 매치
\D
# = [^0-9]
# white space와 매치
\s
# = [ \t\n\r\f\v]
# white space가 아닌 것과 매치
\S
# = [^ \t\n\r\f\v]
# 문자, 숫자와 매치
\w
# = [a-zA-Z0-9_]
# 문자, 숫자가 아닌 것과 매치
\W
# = [^a-zA-Z0-9_]
2. Dot(.) 메타 문자
a.b
Dot(.)은 \n 을 제외한 모든 문자와 매칭됩니다.
a0b
acb
aDb
위 문구들과 매칭되며
abc
위 문구와는 매칭되지 않습니다.
( 문자 1개가 꼭 있어야합니다. )
a[.]b
위의 경우 문자 클래스 안의 . 이기 때문에 . 자체를 의미합니다.
a.b 와는 매칭되지만
a0b, acb 등과는 매칭되지 않습니다.
3. 반복 (*)
ca*t
* 바로 앞의 문자 a가 0부터 무한대로 반복되는 문구와 매칭됩니다.
ct
cat
caaaaaat
위 문구 모두 매칭됩니다.
4. 반복 (+)
ca+t
+ 바로 앞의 문자 a가 1부터 무한대로 반복되는 문구와 매칭됩니다.
ct
위 문구와는 매칭되지 않으며
cat
caaaaat
위 문구와는 매칭됩니다.
5. 반복 ( {m,n}, ? )
- {m}
ca{m}t
{m} 앞의 문자가 반드시 m번 반복시 매칭됩니다.
아래 예시로 알아보겠습니다.
ca{2}t
caat
위 문구와 매칭됩니다.
cat
ct
caaat
위 문구와 매칭되지 않습니다.
- {m, n}
ca{m,n}t
{m,n} 앞의 문자가 m~n번 반복시 매칭됩니다.
즉, a가 m번 이상, n번 이하 반복시 매칭됩니다.
아래 예시로 알아보겠습니다.
ca{2,5}t
caat
caaat
caaaat
caaaaat
위 문구와 매칭됩니다.
cat
ct
caaaaaat
위 문구와 매칭되지 않습니다.
- {m,}
ca{m,}t
{m,} 앞의 문자가 m번 이상 반복시 매칭됩니다.
즉, a가 m번 이상 반복시 매칭됩니다.
응용해보면
{0,} 은 * 와 동일하고
{1,} 은 + 와 동일함을 알 수 있습니다.
아래 예시로 알아보겠습니다.
ca{2,}t
caat
caaat
caaaat
caaaaaaaaaaat
위 문구와 매칭됩니다.
cat
ct
위 문구와 매칭되지 않습니다.
6. ?
ca?t
a가 0~1개 있을 경우 매칭됩니다.
즉, a가 있어도 되고 없어도 된다는 의미입니다.
{0,1} 과 같은 정규표현식으로 보면 되겠습니다.
ct
cat
위 문구와 매칭됩니다.
caat
cbt
위 문구와 매칭되지 않습니다.
< *, +, ? 모두 { } 형태로 대체 가능하지만, 가독성을 위해 기호를 활용할것을 적극 권장합니다. >
'Development > Python' 카테고리의 다른 글
[Solved][Python3.6] ERROR: google-auth 1.19.2 has requirement setuptools>=40.3.0, but you'll have setuptools 39.2.0 which is incompatible. (0) | 2020.07.23 |
---|---|
[Python] 여러 줄 입력을 소스 한줄로 받아 리스트화하기 (0) | 2020.07.22 |
[Python][라이브러리] threading 활용 기초 예시 (0) | 2020.07.15 |
[Solved][Python] RuntimeError: threads can only be started once (0) | 2020.07.15 |
[Python][라이브러리] random 활용 (0) | 2020.07.13 |