마침표(.)는 어떤 문자와도 일치하지만, 문자 집합을 이용하면 특정 범위의 문자들과 일체하는 결과를 얻을 수 있다.
다음 예문에서 na와 sa만 해당되는 결과를 찾고 싶다. 하지만 마침표(.)를 이용하면 ca1.xls라는 불필요한 내용도 패턴에 해당되게 된다. 이를 해결하기 위해서 대괄호([])를 사용해 문자 집합을 표현할 수 있다. 대괄호 안에 있는 문자는 모두 집합의 구성원이 되며, 집합에 속한 문자 가운데 하나가 일치한다.
sales1.xls
order3.xls
sales2.xls
sales3.xls
apac1.xls
na1.xls
na2.xls
ca1.xls
sa1.xls
[ns]a.\.xls
sales1.xls
order3.xls
sales2.xls
sales3.xls
apac1.xls
na1.xls
na2.xls
ca1.xls
sa1.xls
이러한 문자 집합은 대소문자를 구별하고 싶지 않을 때, [Aa] [Cc] 처럼 쓰인다.
위 처럼 집합의 구성원이 2개만 쓸 수 있는 것은 아니다. 숫자인 0부터 9까지, 알파벳인 A부터 Z까지 처럼의 범위를 지정할 수 있다.
[0123456789]처럼 일일이 기재할 수도 있지만 하이픈(-)을 이용해 쉽게 사용할 수 있다.
또한 범위 여러 개를 집합 하나에 합칠 수도 있다.
이를 응용해 #과 16진수 6자리로 구성된 RGB 값을 찾을 수도 있다.
#[0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f]
제외하고 싶은 문자 집합을 지정할 수도 있는데 이는 캐럿(^) 문자를 사용한다.
sales1.xls
order3.xls
sales2.xls
sales3.xls
apac1.xls
sam.xls
na1.xls
na2.xls
ca1.xls
sa1.xls
[ns]a[^0-9]\.xls
sales1.xls
order3.xls
sales2.xls
sales3.xls
apac1.xls
sam.xls
na1.xls
na2.xls
ca1.xls
sa1.xls
참고: Ben Forta, Learning Regular Expressions(2018)