메타 문자(meta characters) : 원래 그 문자가 가진 뜻이 아닌 특별한 용도로 사용하는 문자
문자 클래스 []
문자 클래스로 만들어진 정규식은 '[] 사이의 문자들과 매치'라는 의미를 갖음
즉, 정규 표현식이 [abc]라면 이 표현식의 의미는 'a,b,c 중 한 개의 문자와 매치'를 뜻함
정규식이 [abc]일 때
-문자열이 "a"일 경우 정규식과 일치하는 문자인 "a"가 있으므로 매치
-문자열이 "before"일 경우 정규식과 일치하는 문자인 "b"가 있으므로 매치
-문자열이 "dude"일 경우 정규식과 일치하는 문자가 없으므로 매치되지 않음
[]안의 두 문자 사이에 하이픈(-)을 사용하면 두 문자 사이의 범위(From-To)를 의미.
ex) [a-c]라는 정규 표현식은 [abc]와 동일 / [0-5]는 [012345]와 동일
문자 클래스 안에는 어떤 문자나 메타 문자를 사용할 수 있으나, ^ 메타 문자를 사용할 경우 반대(not)의 의미를 갖는다. 예를 들어 [^0-9]라는 정규 표현식은 숫자가 아닌 문자만 매치된다.
정규표현식 | 설명 |
\d | 숫자와 매치, [0-9]와 동일한 표현식이다. |
\D | 숫자가 아닌 것과 매치, [^0-9]와 동일한 표현식이다. |
\s | whitespace 문자(space나 tab처럼 공백을 표현하는 문자)와 매치, [\t\n\r\f\v]와 동일한 표현식. 맨 앞의 빈칸은 공백 문자(space)를 의미 |
\S | whitespace문자가 아닌 것과 매치, [^\t\n\r\f\v]와 동일한 표현식. |
\w | 문자+숫자와 매치, [a-zA-Z0-9]와 동일한 표현식 |
\W | 문자+숫자가 아닌 문자와 매치, [^a-zA-Z0-9]와 동일한 표현식 |
Dot(.)
정규 표현식의 Dot(.) 메타 문자는 줄바꿈 문자인 \n을 제외한 모든 문자와 매치됨을 의미한다.
a.b
위 정규식의 의미는 "a + 모든 문자 + b"와 같다. 즉, a와 b라는 문자 사이에 어떤 문자가 들어가도 모두 매치된다.
정규식 | 문자열 | 매치 여부 |
a.b | aab | Yes |
a0b | Yes | |
abc | No ("abc"는 "a"와 "b" 사이에 어떤 문자라도 하나는 있어야 하는 이 정규식과 일치하지 않으므로 매치되지 않음) |
반복(*)
ca*t
이 정규식에는 반복을 의미하는 * 메타 문자가 사용되었다. 여기서 사용된 *는 * 바로 앞에 잇는 문자 a가 0부터 무한대로 반복될 수 있다는 의미이다.
정규식 | 문자열 | 매치 여부 |
ca*t | ct | Yes |
cat | Yes (1번 반복) | |
caaat | Yes (3번 반복) |
반복(+)
반복을 나타내는 또 다른 메타 문자로 +가 있다. +는 최소 1번 이상 반복될 때 사용한다. 즉 *가 반복 횟수 0부터라면 +는 반복 횟수 1부터이다.
ca+t
위 정규식은 "c + a(1번 이상 반복 + t"와 같고, 정규식에 대한 매치 여부는 다음과 같다.
정규식 | 문자열 | 매치 여부 |
ca+t | ct | No |
cat | Yes (1번 반복) | |
caaat | Yes (3번 반복) |
반복({m,n})
{} 메타 문자는 반복 횟수를 고정시킬 수 있다. {m,n} 정규식을 사용하면 반복 횟수를 m부터 b까지 매치할 수 있다. 또한 {m,}이면 반복 횟수가 m 이상인 경우이고, {,n}처럼 사용하면 반복 횟수가 n이하를 의미한다.
물론 정규 표현식은 이 외에도 정말 다양하다. 추후 가능하면 이러한 정규 표현식을 정리할 수 있는 날이 오기를 바란다.
다음 포스팅에서는 파이썬으로 이러한 정규 표현식을 어떻게 사용할 수 있는지 알아보자
'Python' 카테고리의 다른 글
Jupyter Notebook과 Git 연동 (0) | 2022.07.01 |
---|---|
[Python] 날짜 처리 방식 (0) | 2021.07.17 |
[Python] 정규 표현식(3) (0) | 2021.07.08 |
[Python] 정규 표현식(1) (2) | 2021.06.29 |
백준 온라인 저지(Baekjoon Online Judge) (0) | 2021.06.26 |