우리는 t로 시작하고 t로 끝나는, 알파벳으로만 이뤄진 네 글자 단어를 찾아야 하는 상황이라고 가정해보자. 이전 포스트에서 배운 내용으로는 정규표현식을 작성할때 "t..t" 밖에 작성을 못할텐데, "t..t"로는 "test"나 "text"처럼 우리가 원하는 값도 찾지만, "t$%t"나 "t-0t"처럼 우리가 찾지 말아야 하는 것도 찾으므로 문제가 된다. 이럴때 문자 집합을 이용하면 간단히 해결된다.
※ 사용예
아래는 위의 예제를 수정한 것이다. .(마침표) 대신 메타 문자 []를 이용하여 t로 시작하고 t로 끝나는, 알파벳으로만 이뤄진 네 글자 단어들을 찾았다. [] 안의 a-z는 abcdefghijklmnopqrstuvwxyz와 같은 의미로써, a-z와 일치하는 문자를 검색한다는 의미다.
근데 위의 예제는 오직 소문자만 검색하는데, 대문자도 검색하고 싶으면 아래처럼 A-Z도 추가하면 된다.
아래는 0-9을 이용해 2자리로 숫자로만 이뤄진 단어를 검색하는 예제이다. A-Z처럼 숫자도 0-9로 표현할 수 있으며 당연히 알겠지만 0-9는 마찬가지로 0123456789과 같은 의미다.
이번 예제는 위에서 배운 A-Z, a-z, 0-9 범위들을 응용한 16진수 컬러 코드를 찾는 예제이고 문자 집합 [A-Fa-f0-9]를 이용해 6자리 16진수 0 1 2 3 4 5 6 7 8 9 A B C D E F의 범위를 찾는 정규표현식을 작성해봤다. HTML 컬러코드는 6자리 이므로 [A-Fa-f0-9]를 여섯 번이나 반복했는데.. 너무 길지만 원하는 결과를 얻긴 하였다.
위의 예제는 길어도 너무 길다. 나중에 배울 내용이지만 아래처럼 구간을 지정해서 정규식을 작성하면 간단히 할 수 있다.
※ 제외하고 검색
[](대괄호)안에 문자 집합을 표현할때 ^(캐럿)문자를 사용하면 해당 표현식은 제외가 된다. 예제를 보면 이해가 빠를 것이다.
먼저 {1,}은 나중에 배우겠지만 최소 한 글자거나 그 이상이라는 의미고 [^0-9\n]의 의미는 0-9와 \n를 제외한다는 의미다.
고로 [^0-9\n]{1,}의 의미는 0-9와 \n(개행)을 제외한 최소 한 글자 이상의 패턴을 찾으라는 의미이고 결과는 아래와 같다.
※ 사용시 주의사항
1. -(하이픈)을 이용하여 범위를 지정할때는 작은 값이 먼저 와야 한다. [Z-A]나 [9-0]처럼 값을 거꾸로 하면 안된다.
2. ^(캐럿)은 위치에 따라 의미가 달라진다. []안에서는 제외를, []밖에서는 문자열의 시작을 나타낸다.
'라이브러리 > regex' 카테고리의 다른 글
[정규표현식] 기본적인 검색 방법 (0) | 2016.02.09 |
---|---|
[정규표현식] 참조 정보 - 메타 문자, 수량자 등 (0) | 2016.02.08 |
[정규표현식] RegExr - 정규식 온라인 툴 (0) | 2016.02.07 |
[정규표현식] Regular Expressions이란? (0) | 2016.02.06 |