※ 요약
제목 그대로 기본적인 검색 방법에 대해 알아볼텐데, 어려운 내용이 아니므로 간단하게 설명하고 끝내도록 하겠다.


※ 있는 그대로 검색

평범한 검색 방법이다. 이 검색 방법은 PC로 문서(*.txt나 워드 등) 작업을 해본 사람이면 다 사용해봤을 법한 내용이다.


준비된 예문에 정규표현식 "e"를 입력하였고, 정규표현식 "e"와 일치된 모든 e가 하이라이팅되었다.

여기서 사용된 정규표현식 "e"는 평범한 텍스트여서 정규식처럼 안보일수도 있지만 확실한 정규식이다.

참고로 matches(일치)된 개수는 45개이다.


이번에 사용한 정규표현식은 "123"이며 위에서 사용한 "e"와 마찬가지로 확실한 정규식이다.

다만 "e"나 "123"처럼 평범한 텍스트로만 이루어진 정규표현식은 낭비지만 정규식을 처음 알아가기에는 좋기에 예제로 사용해봤다.



※ 대소문자 다루기

정규표현식은 기본적으로 대소문자를 구분한다. 하지만 대소문자를 무시하는 기능이 있는데, regexr의 경우 flags에서 "ignore case" 옵션을 체크하면 된다. 아래는 대소문자를 무시한 상황에서의 결과 화면인데, 보면 Te도 검색된걸 확인할 수 있다.

 

※ 모든 문자 찾기

정규표현식에서 "."(마침표)는 모든 문자 하나와 일치한다. 무슨 말인지 모르겠으면 아래 결과를 한 번 보면 이해할 수 있을 것이다. 정규표현식 "e.t"를 입력했더니 e로 시작하고 t로 끝나는 모든 문자열을 검색했다. 앞서 설명처럼 "."은 공백 문자가 오든 영문자가 오든 상관없이 모든 문자를 의미한다.(단, 줄바꿈(newline)문자는 제외된 경우도 있다.)

참고로 "."은 메타 문자 중 하나이며, 다른 메타 문자도 알고 싶다면 이전에 올린 포스트를 참고하기 바란다. 


"."은 연달아 사용할 수도 있다. 아래처럼 정규식 "t..t"를 입력하니 t로 시작하고 t로 끝나는 네 글자를 검색하였다.



※ 특수 문자 검색

위에서 "."(마침표)는 특별한 기능(의미)이 부여된 메타 문자라서 검색하려면 "." 앞에 "\"을 붙여줘야 한다.

"\."가 입력된 아래 예제를 보면 한 번에 이해할 것이다. "\"도 "."과 마찬가지로 메타 문자이다.


"\"도 메타 문자라서 마찬가지로 앞에 "\"을 붙여줘야 한다. 예문을 보면 바로 이해할 수 있을 것이다.



  

※ 요약

이번 포스팅에서는 기본 메타 문자와 수량자, 위치 지정, 특수한 문자, 역참조와 전후방 탐색, 대소문자 변환, 변경자들에 대해서 간략하게 표로 알아볼 것이다. 정규표현식에 대해서 거의 모른다면 봐도 별도움이 안되겠지만, 정규식을 예전에 공부했는데 잊어먹었을 경우 레퍼런스로는 많은 도움이 될 것이다.

아무튼 이번 포스팅의 궁극적인 목적은 나와 여러분의 레퍼런스 겸, 앞으로 정규식을 포스팅 함에 있어 원할한 진행을 위해서이다.


※ 설명

기본 메타 문자

 .

 점 하나당 하나의 문자에 해당하며 모든 문자와 일치

 |

 왼쪽 혹은 오른쪽과 일치

 []

 문자 집합 구성원 중 하나와 일치

 [^]

 문자 집합 구성원을 제외하고 일치

 -

 범위 정의 ([A-Z]와 같은 형태)

 \

 다음에 오는 문자를 이스케이프

수량자

 *

 문자가 없는 경우나 하나 이상 연속하는 문자 찾기

 *?

 게으른 * 문자

 +

 문자 하나 이상 찾기

 +?

 게으른 + 문자

 ?

 문자가 없거나 하나인 문자 찾기

 {n}

 정확히 요소와 n번 일치

 {m,n}

 요소와 m에서 n번 일치

 {n,}

 요소와 n번 이상 일치

 {n,}?

 게으른 {n,}

위치 지정

 ^

 문자열의 시작과 일치

 \A

 문자열의 시작과 일치

 $

 문자열의 끝과 일치

 \Z

 문자열의 끝과 일치

 \<

 단어의 시작과 일치

 \>

 단어의 끝과 일치

 \b

 단어 경계와 일치

 \B

 \b와 반대로 일치

단축 문자

(특수한 문자)

 [\b]

 역스페이스

 \c

 제어문자와 일치

 \d

 모든 숫자와 일치

 \D

 \d와 반대

 \f

 페이지 넘기기(form feed)

 \n

 줄바꿈

 \r

 캐리지 리턴

 \s

 공백 문자와 일치

 \S

 \s와 반대로 일치

 \t

 탭

 \v

 수직 탭

 \w

 영숫자 문자나 밑줄과 일치

 \W

 \w와 반대로 일치

 \x

 16진수 숫자와 일치

 \O

 8진수 숫자와 일치

역참조와 전후방 탐색

 ()

 하위 표현식 정의

 \1

 첫 번째 일치한 하위 표현식. 두 번째 일치한 하위 표현식은 \2로 표기

 ?=

 전방 탐색

 ?<=

 후방 탐색

 ?!

 부정형 전방 탐색

 ?<!

 부정형 후방 탐색

 ?(backreference)true

 조건 지정

 ?(backreference)true|false

 else 표현식 조건 지정

대소문자 변환

 \E

 \L 혹은 \U 변환을 끝냄

 \l

 다음에 오는 글자를 소문자로 변환

 \L

 \E를 만날 때까지 모든 문자를 소문자로 변환

 \u

 다음에 오는 글나를 대문자로 변환

 \U

 \E를 만날 때까지 모든 문자를 대문자로 변환

POSIX 문자 클래스

 [:alnum:]

 모든 영숫자 ([a-zA-Z0-9]와 같음)

 [:alpha:]

 모든 영문자 ([a-zA-Z]와 같음)

 [:blank:]

 빈칸(space)이나 탭 문자 ([\t]와 같음)

 [:cntrl:]

 아스키 제어문자(아스키 0번부터 31, 127)

 [:digit:]

 모든 한 자리 숫자 ([0-9]와 같음)

 [:graph:]

 [:print:]와 동일하나 빈칸(space)은 제외

 [:lower:]

 모든 소문자 ([a-z]와 같음)

 [:print:]

 출력 가능한 모든 문자

 [:punct:]

 [:alnum:]이나 [:cntrl:]가 포함되지 않은 모든 문자

 [:space:]

 빈칸을 포함한 모든 공백 문자 ([\f\n\r\t\v]와 같음)

 [:upper:]

 모든 대문자 ([A-Z]와 같음)

 [:xdigit:]

 모든 16진수 숫자 ([a-fA-F0-9]와 같음)

변경자

 (?m)

 다중행 모드

 

 

 


+ Recent posts