PCRE

PCRE

PCRE는 "Perl Compatible Regular Expressions"의 약자입니다. 이는 Perl 프로그래밍 언어의 정규 표현식 문법과 호환되는 정규 표현식 라이브러리입니다. PCRE는 정규 표현식을 사용하여 문자열 패턴을 검색하고 조작하는 기능을 제공하며, 다양한 프로그래밍 언어와 소프트웨어에서 사용됩니다.

PCRE는 다음과 같은 기능을 제공합니다:

  1. 정규 표현식 컴파일 및 실행: 문자열 패턴을 정의하고 해당 패턴을 사용하여 문자열을 검색하거나 대체할 수 있습니다.
  2. 강력한 패턴 매칭 기능: Perl의 정규 표현식 문법과 동일한 기능을 제공하여 복잡한 패턴 매칭을 가능하게 합니다.
  3. 다양한 프로그래밍 언어 지원: C, C++, Python, PHP 등 다양한 프로그래밍 언어에서 사용할 수 있습니다.
  4. 확장 가능성: 확장 가능한 플러그인 시스템을 통해 정규 표현식을 쉽게 확장하고 커스터마이징할 수 있습니다.

PCRE는 성능이 우수하고, 복잡한 문자열 처리 작업을 효율적으로 수행할 수 있기 때문에 널리 사용됩니다. 예를 들어, 웹 개발, 데이터 분석, 텍스트 처리 등 다양한 분야에서 활용됩니다.

시작과 끝

  • 패턴의 시작과 끝은 구분자로 구별하며, 같은 구분자를 써야 한다.
    예) /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도 아닌 문자