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. 정규 표현식
  1.   기술공통
  2.   기초과학
  3.   진동/파동(광학,음향)
  4.   방송/멀티미디어/정보이론
  5.   전기전자공학
  6.   통신/네트워킹
  7.   정보기술(IT)
        1. 정보기술
    1.   전산기초
    2.   컴퓨터구조
    3.   프로그래밍
      1.   프로그래밍 언어론
            1. 프로그래밍 언어
        1.   구문
          1.   1. 구문
              2. 문장,표현식,변수
              3. BNF,EBNF
              4. 토큰
              5. 제어문
              6. 정규 표현식
        2.   이름,영역,수명,바인딩
        3.   자료형/데이터형
        4.   예외,이벤트 처리
      2.   객체지향
      3.   자료구조
      4.   알고리즘
      5.   자료표현(알파벳/코드)
      6.   시스템 프로그래밍
      7.   프로그래밍언어 종류
      8.   프로그래밍 기타일반
    4.   데이터베이스
    5.   소프트웨어 공학
    6.   운영체제
    7.   정보보호/보안
    8.   IT 기타기술
  8.   공업일반(기계,재료등)
  9.   표준/계측/품질
  10.   기술경영

 
        최근수정     참고문헌