문자 클래스(대괄호)
왼쪽 대괄호는 문자 클래스에 대한 설명을 시작하고 대괄호로 끝납니다. 단일 오른쪽 대괄호는 특별한 의미가 없습니다. 문자 클래스의 구성원으로 오른쪽 대괄호가 필요한 경우 문자 클래스의 첫 번째 문자(또는 ^를 사용하여 이를 부정하는 경우 두 번째 문자)에 쓰거나 이스케이프 문자를 사용할 수 있습니다.
문자 클래스는 대상 문자열의 단일 문자와 일치합니다. 문자 클래스를 부정하기 위해 ^를 사용하지 않는 한 문자는 문자 클래스에 정의된 문자 집합 중 하나여야 합니다. ^가 문자 클래스의 멤버여야 하는 경우 문자 클래스의 첫 번째 문자가 아닌지 확인하거나 그냥 이스케이프하세요.
예를 들어 문자 클래스 [aeiou]는 모든 소문자 모음 문자와 일치하고 [^aeiou]는 모든 비모음 문자와 일치합니다. 참고: ^는 열거형을 통해 문자 클래스에 존재하지 않는 문자를 지정하기 위한 편의 기호일 뿐입니다. 어설션하는 대신 대상 문자열에서 한 문자를 계속 사용하며 현재 일치점이 대상 문자열 끝에 있으면 일치가 실패합니다.
대소문자를 구분하지 않는 일치가 설정된 경우 모든 문자 클래스는 대문자와 소문자 버전을 모두 나타냅니다. 예를 들어 대소문자를 구분하지 않는 [aeiou]는 "A"와 "a"를 모두 일치하며, 대소문자를 구분하지 않는 [^aeiou]도 "A"와 일치하지 않습니다.
개행 문자는 문자 클래스에서 특별한 의미가 없으며 PCRE_DOTALL 또는 PCRE_MULTILINE 옵션과 관련이 없습니다. [^a]와 같은 문자 클래스는 항상 개행 문자와 일치합니다.
문자 클래스에서는 대시(빼기 기호 -)를 사용하여 한 문자에서 다른 문자까지의 범위를 지정할 수 있습니다. 예를 들어, [d-m]은 d와 m 사이의 모든 문자와 일치하며 이 집합은 닫혀 있습니다. 밑줄 자체를 문자 클래스에서 설명하려면 범위로 해석되지 않는 위치(일반적으로 문자 클래스의 시작 또는 끝)로 이동하거나 나타나야 합니다.
문자 범위 설명 뒤에는 오른쪽 대괄호를 사용할 수 없습니다. 예를 들어, [W-]46] 패턴은 W 및 -와 문자열 "46]"을 포함하는 문자 클래스로 해석되므로 "W46]" 또는 "-46]"과 일치할 수 있습니다. 그러나 대괄호가 이스케이프되면 범위의 끝으로 해석되므로 [W-]46]은 W ~ ] 범위의 모든 문자와 4 및 6 종류의 문자를 포함하는 단일로 해석됩니다. 8진수나 16진수 설명에서는 대괄호를 사용하여 범위를 끝낼 수도 있습니다.
범위 연산은 ASCII 순서로 정렬됩니다. [와 같은 문자에 숫자 값을 할당하는 데 사용할 수 있습니다.