메타문자 그룹화

(2025-09-16)

전방 탐색, 후방 탐색


1. [정규표현식 메타문자]  서브 패턴 (subexpression) (그룹화) (캡처그룹, capture group)  :  ( )

  ㅇ 서브 패턴 또는 캡처에 의한 캡처 그룹화는, 부분을 감싸서 구별짓고, 기억하여, 이를 활용키 위함
     - 例) color 또는 colour 매치하려면, col(o|ou)r
        . 여기서, 캡처를 지시하는 괄호 (pattern)는, 
        . 캡처 그룹(capture group)을 만들어, 이를 통해 매칭된 내용을 기억, 활용코자하는 것임


2. [정규표현식 메타문자]  둥근괄호(parenthesis) `( )`에 의한 그룹화의 주요 역할연산 우선순위 명시 (그룹화)
     - `|(또는), *, +, ?, {m,n}` 등이 섞여 있을 때,
     - 괄호 ( )를 사용하여 적용 범위를 한정하고, 우선순위를 명확히 함

  ㅇ 일차한 문자열 저장 활용 (캡처)
     * ( )로 묶인 부분은 캡처 그룹이 되어, 매칭문자열을 자동으로 기억하고 재활용 가능

     - 부분 문자열 저장
        . 정규 표현식 엔진이 ( )에 일치한 내용을 임시로 저장
     - 이를통해, 부분 문자열 (서브 패턴) 위주의 탐색 등
        . 다양하게 서브 패턴을 만들어 재활용 할 때 유용
           .. 즉, 일치한 문자열 (서브 패턴, 그룹)의 저장 (캡처) 및 재활용
     - 그룹 재활용 (backreference, 역참조)
        . 매칭 결과의 임시 저장 후, 번호(수량자)를 붙여, 다시 불러쓸 수 있음
           .. 그룹으로 묶은 패턴의 검사 결과 뒤에, 수량자를 붙여, 어떤 추가 작업에 활용 가능
     - 수량자와 함께 활용
        . 例) (abc)+ → abc가 1번 이상 반복되는 패턴
     - 검사 결과의 저장 또는 비 저장 선택 가능  ☞ 아래 3.번항 참조
     - 탐색 방향을 달리 정할 수 있음  ☞ 아래 4.번항 참조


3. [정규표현식 메타문자]  그룹화 검사 결과의 저장(캡처) 또는 비 저장(논 캡처,비 참조) 구분

  ㅇ 기본적인 그룹화 : (), (?:)
     - 매치 결과를 `캡처(저장)하는` 그룹화, ()
     - 매치 결과를 `캡처(저장)하지 않는` 그룹화, (?: ) 또는 (\% \)
        . 例) (?: ) 사용 시, 비캡처 그룹(non-capturing group) 으로,
           .. 단순히 그룹화만 하고 저장은 하지 않음.


4. [정규표현식 메타문자]   탐색 방향까지도 지정 가능한, 그룹화 기능의 확장

  ※ 통상의 정규표현식은, 텍스트매칭하여 반환하지만, 
     - 때때로, 매칭텍스트의 위치 만을 표시하고 싶을 때가 있음
        . 문자열 자체가 아닌 위치에 일치시키고, 일치 결과의 위치를 반환함
        . 이때, 반환되는 문자가 없으므로, 반환 길이는 0 임
     - 이로부터, 탐색 방향(전방 탐색,후방 탐색)의 결정이 가능하게 됨
     - 한편, 그룹화 안에, 리터럴(문자열)이나 메타문자를 포함할 수 있음

  ㅇ 긍정형 전방탐색 (positive lookahead)  :  (?=)
     - 전방 탐색 문자열 (?=regex)인 위치로부터 앞에서(순방향) 찾음
        . 例) 1000원  =>  .+(?=원)  =>  1000
        . 例) http://www.example.com  =>  .+(?=:)  =>  http
        . 例) abracadabra  =>  a(?=..a)  =>  abracadacra : 처음`abra` 및 끝`acra`

  ㅇ 부정형 전방탐색 (negative lookahed)  :  (?!) 
     - 전방탐색 문자열 (?!regex)이 아닌 위치로부터 앞에서(순방향) 찾음
        . 例) hello world helloabc hello123  =>  hello(?!abc)  
              =>  hello world helloabc hello123
           .. `hello world`,`hello123`은 매칭되지만, `helloabc`는 비 매칭

  ㅇ 긍정형 후방탐색 (positive lookbehind)  :  (?<=)
     - 후방탐색 문자열 (?<=regex)인 위치로부터 뒤에서(후방향) 찾음
        . 例) Price: USD100  =>  (?<=USD)\d+  =>  100
           .. (?<=USD) 뒤에서 하나 이상의 숫자(100)를 찾음

  ㅇ 부정형 후방탐색 (negative lookbehind)  :  (?<!) 
     - 후방탐색 문자열 (?<!regex)이 아닌 위치로부터 뒤에서(후방향) 찾음
        . 例) abc로 끝나지 않은 단어 찾기
           .. xyz123 xyzabc xyzdef  =>  \w+(?<!abc)\b  =>  xyz123 xyzdef

  ※ 단, 자바스크립트 언어는, 후방 탐색을 지원 안함

정규표현식
1. 정규 표현식   2. 메타 문자   3. 메타문자 수량자   4. 메타문자 그룹화   5. 메타문자 앵커   6. 정규표현식 활용 기초   7. 정규표현식 예  
용어해설 종합 (단일 페이지 형태)

"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"
     [정보통신기술용어해설]          최근 편집          Copyrightⓒ 차재복