상세 컨텐츠

본문 제목

Regular Expression - 문자 집합 검색

Development/Regular Expression

by thisisnew 2022. 11. 27. 00:01

본문

반응형

 

3. 문자 집합 범위

 

3-1. 특정 문자 검색

 

https://thisisnew-storage.tistory.com/107

 

Regular Expression - 단일 문자 검색

2. 단일 문자 검색 2-1. 모든 문자 검색 정규 표현식에서.(마침표)는 좀 특별합니다. 마침표는 아무 문자 하나를 의미하는데요. `t.p`gm 예를 들어 t.p는 t와 p사이에 하나의 문자가 들어있다면 반드시

thisisnew-storage.tistory.com

이전 글에서 마침표에 대해 배웠습니다.

마침표를 사용하면 어느 문자든 마침표의 개수만큼 일치하게 되는 것을 확인했는데요.

 

하지만 만약 tap와 top라는 단어만 검색하고 싶을 때는 어떻게 해야 할까요?

 

t.p를 사용하게 되면 tap, top뿐만 아니라 tbp, t1p 등 전부 검색이 되어버립니다.

 

바로 이럴 때 사용하는 것이 대괄호([])입니다.

 

대괄호 안에 있는 문자는 하나의 집합이 되는데요.

그래서 집합에 속한 문자여야만 검색이 됩니다.

그래서 이렇게 한번 바꿔볼게요.

//`t.p`gm
`t[ao]p`gm

네 a와 o만 일치하여 tap, top만 검색되는 것을 볼 수 있습니다.

 

이런 문자 집합은 대소문자를 구별하지 않고 검색할 때 유용합니다.

아래처럼 바꿔보죠.

//`t[ao]p`gm
`t[aAoO]p`gm

 

 

3-2. 문자 범위를 이용한 검색

 

지금까진 배운 것을 토대로 tap와 top로 시작하며 끝자리는 숫자로 된 네 글자의문자를 검색해보죠.

tap1, tap2, top1, top2 같은 것들이요.

 

그럼 대략 이런 식으로 적을 수 있겠습니다.

`t[aAoO]p.`gm

그리고 결과를 보면 위의 사진처럼 잘 일치하는 것 같아 보입니다.

 

하지만 몇 가지 케이스를 추가해보면 그렇지 않음을 알 수 있는데요.

맨 아래의 tape, topc도 검색되는 것을 볼 수 있죠.

문자열 마지막 자리는 숫자여야 되는데 말입니다.

 

이럴 때 앞서 배운 대괄호를 쓸 수 있습니다.

`t[aAoO]p[0123456789]`gm

그럼 이렇게 마지막 자리는 숫자로 고정할 수 있게 됩니다.

 

그런데 만약 찾으려는 문자열이 길다면 매번 저렇게 0123456789를 쓸 수는 없겠죠?

이때 사용하는 것이 하이픈(-)입니다.

 

그래서 다시 바꿔보면요.

`t[aAoO]p[0-9]`gm

이렇게 동일한 결과가 나오는 것을 볼 수 있습니다.

 

범위는 숫자 외에도 적용 가능합니다.

가령 알파벳에도 말이죠.

  • A-Z는 A부터 Z사이에 있는 모든 대문자
  • a-z는 a부터 z사이에 있는 모든 소문자

그래서 모든 대소문자 알파벳과 숫자를 검색하려면 [A-Za-z0-9]라고 작성하면 됩니다.

 

참고로 하이픈은 대괄호 안에서만 범위를 나타내는 메타 문자입니다.

대괄호를 벗어나면 문자 그대로인 하이픈을 검색하게 됩니다.

 

 

3-3. 특정 문자를 제외한 검색

 

앞서 범위를 지정하면, 원하는 문자만 정할 수 있다고 했습니다.

하지만 원하는 문자의 개수가 지나치게 많으면 복잡해진다는 단점이 있습니다.

이럴 때는 차라리 원하지 않는 문자만 제외하는 것이 편하죠.

 

그때 사용하는 것이 캐럿(^)입니다.

 

만약 tap, top의 맨 끝에 숫자가 아닌 문자인 형태를 검색해본다고 해보죠.

tape, topc 같은 것들이요.

그럼 아래와 같이 숫자의 범위 앞에 캐럿을 붙여주면 됩니다.

 

`t[aAoO]p[^0-9]`gm

 

반응형

관련글 더보기

댓글 영역