PCRE / 메모

PCRE

Perl Compatible Regular Expressions

시작과 끝

  • 패턴의 시작과 끝은 구분자로 구별하며, 같은 구분자를 써야 한다.
    예) /abc/, $abc$, |abc|
  • 구분자는 영문, 숫자, \를 제외한 모든 문자를 사용할 수 있다. 보통 /를 많이 사용하며, 패턴에 /를 찾아야 하는 경우 다른 구분자를 사용한다.

메타문자

  • \
    이스케이프 문자
  • ^
    문자열의 시작
    /^abc/ : abc로 시작하는 문자열.
  • $
    문자열의 끝
    /abc$/ : abc로 끝나는 문자열
  • .
    단일 문자
    /a.b/ : a와 b 사이에 문자 하나
  • |
    OR
  • [
    클래스의 시작
  • ]
    클래스의 끝
  • (
    서브 패턴의 시작
  • )
    서브 패턴의 끝
  • {
    수량자의 시작
  • }
    수량자의 끝
  • \b
    문자의 시작과 끝
  • \t
  • \r
    커서를 현재 줄 처음으로 이동
  • \n
    커서를 다음 줄로 이동

수량자

수량자 바로 앞의 문자가 몇 번 나와야 하는지 지정

  • ?
    0번이나 1번. {0,1}과 같다.
    /abc?/ : ab, abc와 매칭
  • *
    0번 이상. {0,}과 같다.
    /abc*/ : ab, abc, abcc 등과 매칭
  • +
    1번 이상. {1,}과 같다.
    /abc+/ : abc, abcc 등과 매칭
  • {n}
    n번만
    /abc{2}d/ : abccd와 매칭
  • {n, m}
    n번 이상 m번 이하
    /abc{2,3}d/ : abccd, abcccd와 매칭
  • {n,}
    n번 이상
    /abc{2,}d/ : abccd, abcccd, abcccd 등과 매칭

문자 클래스

\, |, ^, - 를 제외한 모든 문자는 리터럴로 취급. -가 클래스 마지막에 사용되는 경우에는 리터럴로 취급.

  • [0-9], \d
    임의의 10진수
  • [^0-9], \D
    10진수가 아닌 아닌 모든 문자
  • [\f\r\t\n\v], \s
    모든 공백 문자
  • [^\f\r\t\n\v], \S
    공백 문자가 아닌 모든 문자
  • [A-Za-z0-9], \w
    A-Z이거나 a-z 이거나 0-9에 해당하는 모든 문자
  • [^A-Za-z0-9], \W
    A-Z도 아니고 a-z도 아니고 0-9도 아닌 문자