Regular Expression   정규 표현식

(2017-12-08)
1. 정규 표현식 (Regular Expression)

  ㅇ 1 이상의 문자 또는 기호를 조합해 만들어진 표현식
     - 응용 : 문자열 패턴을 간단한 식으로 표현하여, 문자열 처리에 응용
        . 例) 검색, 추출, 삭제, 치환 등

  ※ 한편, 정규(Regular)는,
     - `규칙적인`,`정식인`,`좋은 성질을 갖는`,`다루기 쉬운` 등을 의미


2. 정규 표현식 기본

  ㅇ 대부분의 정규 표현식은 슬래시(/)로 감싸짐

  ㅇ 기본 패턴 기호
     - 리터럴    (일반 문자 기호)

     - 메타 문자 (특수 문자 기호) => 특별한 의미를 지닌 문자
        . 선택              : | 
           .. 例) the|The|THE => the 또는 The 또는 THE 과 일치하는 문자열을 찾음

        . 문자 클래스(한 문자) : [ ]
           ..  특정 문자를 찾거나, 특정 문자들로 이루어진 문자열을 찾음
           ..  대괄호 [ ] 내에 지정된 모든 문자들과의 일치
           ..  例) 0부터 9까지 숫자 1개를 찾는 문자 클래스는, [0123456789]
           ..  例) 영어 소문자 모음을 찾는 문자 클래스는, [aeiou]

        . 서브 패턴(그룹화) : ( )
           ..  例) color 또는 colour 매치하려면, col(o|ou)r

        . 수량자 (반복)     : *, +, ?, { }                          ☞ 3.번 항 반복 연산 참조
           ..  *     (최소 0회 이상 매치)
           ..  +     (최소 1회 이상 매치)
           ..  ?     (0 또는 1회 만 매치, 아예 없거나 1회 만 나타남, 최대 1회)
           ..  {n}   (n회 반복)
           ..  {n,}  (적어도 n회 이상 반복 매치)
           ..  {n,m} (범위 지정 반복, n회부터 m회까지 반복)

        . 범위 지정         : -
           ..  例) [0-9] : 0부터 9까지 어느 숫자라도 일치함

        . 앵커              : ^, $, \
           ..  정규식 패턴을 특정 위치에 고정하여, 그 위치에 일치시키기 위함
           ..  ^ : 문자열의 처음
           ..  $ : 문자열의 끝

           .. \d  :  1개 숫자 [0-9]
           .. \D  :  위 \d의 반대(숫자가 아닌 모든 문자)
           .. \s  :  1개 공백문자(공백,,캐리지리턴,줄바꿈 등)
           .. \S  :  위 \s의 반대(공백문자가 아닌 모든 문자)
           .. \w  :  단어(a-z,A-Z,0-9,_)
           .. \b  :  단어 경계
           .. \B  :  위 \b의 반대(단어 경계를 제외한 모든 문자)
           .. \.  :  임의 한 문자와의 혼동 방지

        . 임의 한 문자  : .

        . 옵션 지정
           ..  g : 전역 검색 (모든 일치를 전부 대상으로 함. 그렇지 않으면 최초 일치 만)
           ..  i : 대소문자 구분 안함
           ..  m : 일치 대상에 줄바꿈이 있더라도 전체 검색


3. 정규표현식 내 기본 연산

  ※ 정규표현식과 조합해서 패턴을 만듬

  ㅇ 연접 (Concatenation) : 정규 표현식을 연결하는 연산
     - 별도의 특별한 기호는 없고, 단지 붙여쓰기 만 하면 됨

  ㅇ 반복 (Repetition)    : *, +, ?, {}                               ☞ 2.번 항 수량자 참조
     -  *      : 직전 문자가 0회 이상 반복 일치함 (없거나 1회 이상)
     -  +      : 직전 문자가 1회 이상 일치함 (최소 1회 이상)
     -  ?      : 직전 문자가 없거나 1번 만 일치함
     -  {n}    : 정확히 n번 반복
     -  {n,}   : n번 이상 반복
     -  {n,m}  : 최소 n번부터 최대 m번까지 반복

  ㅇ 선택 (Selection)     
     -  | (OR,선택 또는 UNION,합)

  ※ 연산 결합 순위 : 반복 > 연접 > 선택


4. 정규 표현식(문자열 패턴 식) 例)

  ㅇ 0부터 9까지 숫자 하나     :  0|1|2|3|4|5|6|7|8|9 또는 [0123456789] 또는 [0-9] 또는 \d
  ㅇ 10에서 19 사이의 숫자     :  \b[1][0-9]\b 또는 \b[1]\d\b
  ㅇ [0-9]의 숫자 3회 반복     :  [0-9]{3}
  ㅇ 임의 길이의 숫자          :  \d*
  ㅇ 임의 길이의 영문 알파벳   :  [A-Za-z]*
  ㅇ 식별자                   :  [A-Za-z_][A-Za-z0-9]*
  ㅇ 5개 숫자 만으로 된 문자열 :  ^\d\d\d\d\d$


5. 정규표현식 활용

  ㅇ 대상 : 문자열

  ㅇ 조건 : 정규 표현식(문자열 패턴)

  ㅇ 실행 : 검색, 치환, 검사

  ※ 정규표현식 활용 例 ☞ 자바스크립트 정규표현식, PHP 정규표현식 참조


[구문] 1. 구문 2. 문장,표현식,변수 3. BNF,EBNF 4. 토큰 5. 제어문 6. 정규 표현식

 
        최근수정     참고문헌