Regular Expression   정규 표현식

(2018-10-13)
1. 정규 표현식 (Regular Expression)

  ㅇ 1 이상의 문자 또는 기호를 조합해 만들어진 문자열 축약 표현식

  ㅇ 정규표현식 응용 (문자열 처리/조작 기술에 가장 많이 쓰여짐)
     - 문자열 패턴을 간단한 식으로 표현하여, 이를 문자열 조작/처리에 응용
        . 例) 특정 문자열의 검색, 추출, 삭제, 치환 등

  ※ 한편, 정규(Regular)는,
     - 원래, `규칙적인`,`정식인`,`좋은 성질을 갖는``,`다루기 쉬운` 등을 의미
     - 여기서는, 단순하고 쉽고 강력하며 실용적인 이라는 뜻을 내포함


2. 정규 표현식[전선] 역사 및 구현 엔진

  ㅇ 역사
     - 1950년대 : 스티븐 클레이니(Stephen Kleene), `정규 집합` 수학모델 창시
     - 1960,1970년대 : 케네스 톰슨(Kenneth Thompson), 정규표현식 적용 논문 발표 및 구현
     - 1990년대 : 필립 헤이즐, 정규표현식 라이브러리 PCRE 개발

  ㅇ 구현 엔진 구분
     - DFA (Deterministic Finite Automation, 결정적 유한 오토마타)
     - NFA (Non Deterministic Finite Automation, 비 결정적 유한 오토마타)
        . 例) PCRE(Perl Compatible Regular Expression), VIM(Vi IMproved) 등


3. 정규 표현식의 기본 (주요 구성/규칙 등)

  ㅇ (표시)  대부분의 정규 표현식은 슬래시(/)로 감싸짐
  ㅇ (연산)  기본 연산 셋 : 연접, 반복, 선택
  ㅇ (기호)
     - (순수 문자 기호)  리터럴 : 문자,숫자 등 그 자체
     - (특수 문자 기호)  기본 연산에 추가적인 패턴 기호 : 메타 문자 


4. 기본 연산

  ※ 정규표현식 내 조합해서 패턴을 만드는 기본 연산연접 (Concatenation) 
     - 별도의 특별한 기호는 없고, 단지 붙여쓰기 만 하면 됨

  ㅇ 반복 (Repetition) 
     - 반복을 나타내는 수량자 :  *, +, ?, {}

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

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


5. 메타 문자 (특수 문자 기호)

  ㅇ 위 4.항의 기본 연산에 추가시켜, 쉽게 쓸 수 있도록 만들어진 패턴 기호 : 메타 문자 
     - 비록, 정규표현식이,
        . 기본 연산 만으로도 표현 가능하지만,
        . 특별한 의미를 갖는 문자들로써, 
        . 프로그래머 관점으로 정규표현식을 보다 쉽게 표현할 수 있는 방법임
     - 例) 수량자, 점, 문자 클래스, 앵커, 수정자 등

  ※ ☞ 정규표현 메타 문자 참조
     - 선택 `|`, 문자 클래스 `[ ]`, 서브 패턴 `( )`, 수량자(Quantifier) `*, +, ?, { }`, 
       위치 고정 앵커 `^, $`, 특정 용도 앵커 `\`, 임의 한 문자 `.`, 
       수정자(Modifier) `g, i, m, s`, 이스케이프 `\` 등


6. 정규표현식 활용

  ㅇ 활용 기초 (주로, 문자열 조작에 쓰임)
     - 활용 대상 : 문자열 또는 문장
     - 조건 지정 : 정규 표현식(문자열 패턴)
     - 실행 종류 : 검색, 추출, 치환, 검사 등

  ㅇ 캡처와 치환
     - 캡처 : 정규표현식과 문자열로부터 서브매치를 빼내는 것
     - 치환 : 정규표현식을 사용하여 특정 문자열을 치환하는 것

  ㅇ 문자열 단어의 부위 구분
     - 접두사(Prefix) : 선두 문자열
     - 접미사(Suffix) : 말미 문자열
     - 부분 문자열(Substring) : 포함된 문자열문자열 일치의 종류
     - 완전 일치 : 주어진 문자열 전체에 일치 (주로, 문자열 검증에 이용)
     - 전방 일치 : 주어진 문자열접두사(prefix)에 일치
     - 후방 일치 : 주어진 문자열의 접미사(suffix)에 일치
     - 부분 일치 : 주어진 문자열의 부분 문자열(substring)에 일치 (주로, 검색,치환에 이용)

  ※ 정규표현식 활용 例  ☞ 정규표현식 예 참조

  ※ 주요 프로그래밍 언어에서 정규표현식 例  ☞ 자바스크립트 정규표현식, PHP 정규표현식 참조


[정규표현식] 1. 정규 표현식 2. 정규표현식 예 3. 정규표현 메타 문자

 
        최근수정     요약목록(시험중)     참고문헌