정규표현식 문자 집합

Kim Jin Hyeok·2021년 2월 17일
0

마침표(.)는 어떤 문자와도 일치하지만, 문자 집합을 이용하면 특정 범위의 문자들과 일체하는 결과를 얻을 수 있다.

여러 문자 중 하나와 일치시키기

다음 예문에서 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]처럼 일일이 기재할 수도 있지만 하이픈(-)을 이용해 쉽게 사용할 수 있다.

또한 범위 여러 개를 집합 하나에 합칠 수도 있다.

예시

  • [0-9] : 모든 숫자와 일치
  • [A-Z] : A와 Z 사이에 있는 모든 대문자와 일치
  • [a-z] : a와 a 사이에 있는 모든 소문자와 일치
  • [A-G] : A와 G 사이에 있는 모든 대문자와 일치
  • [A-Za-z0-9] : 모든 영문자, 숫자와 일치

이를 응용해 #과 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)

0개의 댓글