Metacharacter   정규표현 메타 문자

(2020-04-01)

메타 문자

1. 메타 문자 (특수 문자 기호)정규표현식 내 특별한 의미를 갖는 문자 기호
     - 비록, 정규표현식이,
        . 기본 연산 셋(연접,반복,선택) 만으로도 표현 가능하지만,
        . 특별한 의미를 갖는 문자들로써, 
        . 프로그래머 관점으로 정규표현식을 보다 쉽게 표현할 수 있는 방법임
     - 例) 선택 `|`, 문자 클래스 `[]`, 서브 패턴 `()`, 수량자 `* + ? {}`, 앵커 `^ $ \ 등`,
           점 `.`, 수정자 `g i m s` 등


2. 선택 (selection)  :  | 

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

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


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

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

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

  ㅇ 문자 클래스 내 범위 지정  :  -  (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개 문자에 일치) 등 


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. 정규표현식 예

 
        최근수정     요약목록     참고문헌