여러 문자 중 하나와 일치시키기
모든 문자가 아니라 다만 n이나 s와 일치하는 파일명만 찾고 싶을 때 정규 표현식에서는 메타 문자인 대괄호([ ])를 사용해 문자 집합을 표현한다.
대괄호([ ])안에 있는 문자는 모두 집합의 구성원이 되며, 집합에 속한 문자 가운데 하나가 일치한다. 집합에 속한 문자가 모두 일치할 필요는 없다.


정규 표현식: [ns]a.\.

분석: 이 패턴은 n이나 s중 한 문자와 일치하며, c나 다른 문자와는 일치하지 않는다. 대괄호([ ])는 집합을 의미하기 때문에 대괄호 자체는 어떤 문자와도 일치하지 않는다. 대괄호([ ])는 집합을 의미하기 때문에 대괄호 자체는 어떤 문자와도 일치하지 않는다. 문자 a는 a와 일치하고 마침표(.)는 모든 문자와 일치한다.


※ 실제로 이런 상황에서 [ns]a.\. 는 정답이 아니다. 만약 파일명 가운데 usa1.xls가 있다면, 해당 파일명 역시 정규 표현식과 일치하기 때문이다. 

이 문제를 해결하려면 위치도 지정해서 찾아야 한다.


위의 상황은 이것으로도 할 수 있다.

[ns]a[0-9]\.


※ 하이픈(-)은 대괄호([ ]) 안에서만 메타 문자인 특수한 메타 문자다. 

집합 밖에서 하이픈(-)은 단순히 문자 그대로 하이픈(-)과 일치한다. 그래서 집합 밖에서는 하이픈(-) 문자에 굳이 역슬래시(\)를 붙일 필요가 없다.



제외하고 찾기

문자 집합은 일반적으로 찾고 싶은 문자의 목록을 정하는 데 쓰지만, 반대로 찾을 때 제외하고 싶은 문자 목록을 정할 때도 쓸 수 있다. 

다른 말로, '여기서 지정한 목록을 제외하기' 라고 할 수 있다.


캐럿(^) 문자를 써 제외할 문자 집합을 지정한다.

캐럿(^)문자는 이 문자 바로 뒤에 있는 문자나 범위뿐만 아니라 집합 안에 있는 문자나 범위를 모두 제외한다.


regex: [ns]a[^0-9]\.


정리:

메타 문자인 대괄호([ ])는 문자 집합을 정의하는데, 그 집합 구성원 중에 한 문자라도 일치해야 한다.(and 가 아닌 or이다). 문자 집합은 문자를 일일이 열거하거나 하이픈(-)문자를 사용해 범위를 설정할 수 있다. 

또 캐럿(^)문자는 지정한 문자들을 제외한 어떤 것들과 일치시킨다.


'Programming > RegEx' 카테고리의 다른 글

포직스(POSIX) 문자 클래스  (0) 2013.05.12
메타 문자 사용  (0) 2013.05.06
정규 표현식(Regualr Expression)  (0) 2013.05.05
태그 찾기  (0) 2013.02.12
[Python] Regular Expression  (0) 2013.02.07
Posted by scii
: