문자 집합으로 찾기
Programming/RegEx 2013. 5. 6. 01:10 |정규 표현식: [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 |