정규식에서 대부분의 문자와 글자는 자기 자신과 일치합니다. 하지만 메타문자(metacharacter)라고 불리는 특수 문자들은 자기 자신과 매칭되지 않습니다. 대신 특정 패턴이 일치해야 함을 나타내거나, 정규식의 일부를 반복하거나 변경하는 역할을 수행합니다.
정규식 메타문자 전체 목록
. ^ $ * + ? { } [ ] \ | ( )대괄호 [ ] — 문자 클래스
먼저 살펴볼 것은 [와 ]입니다. 이 기호들은 문자 클래스(character class)를 나타내는 데 사용되며, 매칭하고 싶은 문자들의 집합을 의미합니다.
문자들을 개별적으로 나열할 수도 있고, 두 문자 사이에 -(하이픈)를 넣어 범위로 지정할 수도 있습니다.
[xyz]— x, y, z 중 어떤 문자든 하나와 일치[x-z]— 위와 동일한 집합을 범위 표기법으로 표현[a-z]— 소문자 알파벳만 매칭
문자 클래스 내부에서는 메타문자가 동작하지 않음
중요한 점은 메타문자가 문자 클래스 내부에서는 특수한 기능을 잃는다는 것입니다. 예를 들어 [abc$]는 'a', 'b', 'c', '$' 중 하나와 일치합니다. '$'는 원래 메타문자지만, 문자 클래스 안에서는 단순한 리터럴 문자로 취급됩니다.
캐럿(^)으로 부정(NOT) 표현하기
문자 클래스의 첫 번째 문자로 ^가 오면, 해당 클래스에 포함되지 않은 모든 문자와 일치한다는 의미가 됩니다. 예를 들어 [^8]은 숫자 '8'을 제외한 모든 문자와 매칭됩니다.
백슬래시(\) — 가장 강력한 메타문자
아마도 가장 중요한 메타문자는 백슬래시 \일 것입니다. 백슬래시는 다른 모든 메타문자를 이스케이프(escape)하는 데 사용되므로, 패턴 내에서 메타문자 자체를 매칭할 수 있게 해줍니다.
예를 들어 ]나 \ 문자 자체를 찾아야 한다면, 앞에 백슬래시를 붙여 특수 의미를 제거하면 됩니다: \] 또는 \\.