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. 정규표현식 예
  1.   기술공통
  2.   기초과학
  3.   진동/파동
  4.   방송/멀티미디어/정보이론
  5.   전기전자공학
  6.   통신/네트워킹
  7.   정보기술(IT)
        1. 정보기술
    1.   전산기초
    2.   컴퓨터구조
    3.   프로그래밍
          1. 프로그램, 프로그래밍
      1.   프로그래밍 언어론
      2.   프로그래밍 방법론
      3.   객체지향 프로그래밍
      4.   자료표현코드
      5.   자료구조
      6.   알고리즘
      7.   시스템 소프트웨어
        1.   번역/번역기
        2.   컴파일러
        3.   정규표현식
          1.   1. 정규 표현식
              2. 메타 문자
              3. 메타문자 수량자
              4. 메타문자 그룹화
              5. 메타문자 앵커
              6. 정규표현식 활용 기초
              7. 정규표현식 예
        4.   (기타)
      8.   프로그래밍언어 종류
      9.   프로그래밍 기타일반
    4.   데이터베이스
    5.   소프트웨어 공학
    6.   운영체제
    7.   정보보호/보안
    8.   IT 기타기술
  8.   공학일반(기계,재료등)
  9.   표준/계측/품질
  10.   기술경영

 
        요약목록     참고문헌