Metacharacter   정규표현 메타 문자

(2023-12-15)

메타 문자, 문자 클래스


1. 메타 문자 (특수 문자 기호)정규표현식 내 특별한 의미를 갖는 문자 기호

  ㅇ 비록, 정규표현식이,
     - 기본 연산 셋(연접,반복,선택) 만으로도 표현 가능하지만,
     - 프로그래머에게 정규표현식을 보다 쉽게 사용토록 하기 위해, 
     - 특별한 의미를 갖는 문자들에 의한, 
        . 例) (선택, 문자 클래스, 서브 그룹화, 앵커, 수량자, 점, 수정자, 이스케이프) 
            => ( | , [ ] , ( ) , ^ $ \ , * + ? { } , . , g i m s , \ )
     - 문자 기호 표현 방법임


2. 선택 (selection)  :  | 

  ㅇ | (OR, 선택 또는 UNION, 합)
     -  例) the|The|THE  =>  the 또는 The 또는 THE 라는 문자열 패턴을 나타냄

  ㅇ 주요 역할
     - 2 이상의 패턴 중 하나를 선택할 때


3. 문자 클래스 (character class) (한 문자)  :  [ ]

  ※ (문자 클래스는, 특정한 한 문자를 나타냄)
     -  `[ ]` 안에 여러 문자를 나열할 수도,
     -  `-`를 이용하여 문자열 범위 지정도 가능

  ㅇ 대괄호 [ ] 내에 지정된 모든 문자들에서 한 문자와의 일치를 뜻함
     -  例) [0123456789]  =>  0부터 9까지 숫자 1개를 찾는 문자 클래스
     -  例) [aeiou]  =>  영어 소문자 모음 1개를 찾는 문자 클래스

  ㅇ 문자 클래스 내 범위 지정  :  -  (ASCII 코드 순서에 따름)
     -  例) [0-9]  =>  0부터 9까지 숫자
     -  例) [a-zA-Z]  =>  영문 알파벳 문자
        . 참고로, `-` 자체를 포함하려면, [-a-z] 또는 [a-z-] 처럼 맨앞이나 맨뒤에 적으면 됨

  ㅇ 문자 클래스 내 부정  :  선두 위치에 ^를 쓰면 부정
     -  例) [^0-9A-Za-z]  =>  숫자나 영문 알파벳 이외의 모든 문자에 일치함


4. 서브 패턴 (그룹화) (subexpression) :  ( )

  ※ ☞ 메타문자 그룹화 참조
     - 서브 패턴(그룹화)은, 부품 단위로 감싸서 구별짓기 위함
        . 例) color 또는 colour 둘다 매치하려면, col(o|ou)r


5. 수량자 (quantifier) (반복)  :  *,  +,  ?,  { } 

  ※ ☞ 메타문자 수량자 참조
     - 수량자는, 1 이상의 바로전 문자들의 반복 범위를 지정할 때 쓰여짐) 
        .  *     :  (최소 0회 이상 매치)
        .  +     :  (최소 1회 이상 매치)
        .  ?     :  (0 또는 1회 만 매치) 
        .  {n,m} :  (범위 지정 반복, n회부터 m회까지 반복)
        .  {n}   :  (n회 반복)
        .  {n,}  :  (n번 이상 반복)


6. 앵커 (anchor)  :  ^,  $, \

  ※ ☞ 메타문자 앵커 참조
     - (문자열이 아니고, `위치` 및 `특정 용도`에 일치시키는 것)
     - 위치 고정 앵커  :  ^,  $ (정규식 패턴을 특정 위치에 고정하여, 그 위치에 일치시키기 위함)
     - 특정 용도 앵커  :  \ (\와 순수 문자와의 조합으로 특정 용도에 사용)
        . \A (텍스트 선두 위치)
        . \b (단어 경계 위치)
        . \B (단어 경계를 제외한 모든 위치)
        . \z (텍스트 끝 위치)
     - 기타 용도 앵커 : 
        . \d (1개 숫자에 일치)
        . \D (숫자가 아닌 모든 문자)
        . \w (1개 문자에 일치) 
        . \s (공백문자) 등 


7. 점 (임의 한 문자)  :  .

  ㅇ `문자`,`숫자`,`_`,`@`,`쉼표(,)`,`따옴표(')`,`공백 문자` 포함
     - 단, 점(.) 수량자는, 공백문자 중 `줄바꿈 문자` 만은 제외(예외)하고 있음
        . (공백 문자 : 스페이스 바,백 스페이스,수평탭,수직탬,폼피드,`줄바꿈 문자`)

  ㅇ 例)
     -  .*  =>  아무 문자도 없거나, 임의 문자가 1회 이상 반복될 때 매치됨
     - ^ab.*  =>  ab로 시작(^)하는 모든 문자열(ab,abc,abcd 등)과 매치됨 
     -  .+   =>  모든 문자열이 매치됨
     -  r.*e  =>  re, rare, recognize 등 r로 시작하고 e로 끝나는 임의 문자열들이 매치됨
     -  ab.  =>  ab로 시작하는 모든 3 문자로된 문자열이 매치됨


8. 수정자 (modifier) 또는 옵션  :  g,  i,  m,  s

  ※ (검사 위치,범위를 수정해 줌)

  ㅇ  g (global)      : 전역 검색 
     - 모든 일치를 전부 대상으로 함
     - 그렇지 않으면(즉, g가 아니면/없으면), 최초 일치 만

  ㅇ  i (ignore case) : 대소문자 구분 안함

  ㅇ  m (multi line)  : 일치 대상에 줄바꿈이 있더라도 전체 검색
     - 따라서, 전체 모두를 매 라인별로 검색 가능

  ㅇ  s (single line, dotall) : `임의 한 문자 . `에 줄바꿈 문자까지도 포함
     - 따라서, 전체 라인 모두를 한 라인 처럼 일치할 때까지 모두다 검색 가능

  ※ 例) /img
     - 영문 대소문자 구분 없이(/i), 모든 줄에 걸쳐서(/m), 전역 검사(/g)를 함


9. 이스케이프

  ㅇ 이스케이프  :  \ 또는 \                     ☞ 이스케이프 시퀀스 (Escape Sequence) 참조
     -  (위의 메타문자와 같은 표시 불가능한 문자를 표현할 때, 이 문자를 순수 문자로 처리 함)
        . 例) https?:\/\/  =>  http:// 또는 https://와 일치
        . 例) \( 와 \)  =>  소 괄호 기호 ( ) 는 모두 메타문자 이므로, 이스케이프 시켜야 함
        . 例) \[ 와 \]  =>  대 괄호 기호 [ ] 는 모두 메타문자 이므로, 이스케이프 시켜야 함

정규표현식
   1. 정규 표현식   2. 메타 문자   3. 메타문자 수량자   4. 메타문자 그룹화   5. 메타문자 앵커   6. 정규표현식 활용 기초   7. 정규표현식 예  


Copyrightⓒ written by 차재복 (Cha Jae Bok)               기술용어해설 후원
"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"