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://와 일치
        . 例) \
( 와 \
)  =>  소 괄호 기호 ( ) 는 모두 메타문자 이므로, 이스케이프 시켜야 함
        . 例) \
[ 와 \
]  =>  대 괄호 기호 [ ] 는 모두 메타문자 이므로, 이스케이프 시켜야 함