'Regular'에 해당되는 글 1건

Table of contents

1. Regular expression?

2. 구성요소

  2-1 메타문자? 리터럴 문자?

  2-2 메타 문자

  2-3 리터럴 문자

예제




1. Regular expressions?

  텍스트를 표현하는 일종의 규칙입니다. 컴퓨터 세계에서는 분야 막론하고 다양하게 쓰이고 있으며 반드시 익혀 두어야 하는 기능입니다. 


2. 구성 요소

  2-1. 메타 문자? 리터럴 문자?

    메타 문자는 "*", "-" 등과 같은 특수 문자를 뜻한다. 

    리터럴 문자는 일반적인 문자를 뜻한다. 

  2-2 메타 문자

    메타 문자는 상황에 따라 메타 문자로 인식되기도 하고 리터럴 문자로 인식되기도 합니다. 


    '^' : 시작을 의미함. 예를 들어 "^cat" 이라고 표현하면 cat 으로 시작하는 문자열 검색해줌

    '$' : 끝을 의미함. 예를 들어 "cat$" 이라고 표현하면 cat 으로 끝나는 문자열 검색해줌

    '[...]' : 괄호 안에 있는 내용들은 or 이나 범위를 뜻함. 예를 들어 [aB] 는 a 나 B, [0-9] 는 0부터 9까지 를 의미함. 

    '[^...]' : '^' 를 괄호 안에 사용할 경우엔 NOT 의 의미가 된다. 예를 들어 [^0-9] 는 숫자가 아닌것 이라는 의미를 지닌다. 

    '|' : or 의 의미를 지니고 있다. 예를 들어 'Kay|Kim' 는 Kay 와 Kim 중에 하나만 일치해도 된다는 의미를 지닌다. 

    '.' : 아무 문자와 매칭 가능함. 예를 들어  "A.B" 라고 표현할 경우 AaB ACB AXB 모두 매칭됨. 

    '(..)' : 일반적인 괄호와 동일한 역활. 범위를 한정시킴. 예를 들어 "(ABC|DEF):XYZ" 라고 표현 할 경우 ABC:XYZ 나 DEF:XYZ  가  매칭됨

    '\<' : 단어가 시작되는 위치를 뜻하는데 줄바꿈되어 있는 경우에 유용함.

    '\>' : 단어가 끝나는 위치를 뜻하는데 줄바꿈되어 있는 경우에 유용함. 

    '\' : Escape 메타 문자. 위에서 사용한 것과 용도가 명확히 다릅니다. \ 다음에 연달아 나오는 문자는 메타 문자가 아니라 일단 문자로 인식하게 됩니다. '\.' 이라고 표현하면 메타 문자 '.' 의 역활은 사라지고 그냥 문자로 취급됩니다. "ega.att.com" 을 찾고 싶을 때 "ega.att.com" 이라고 표현하면 "megawatt computing" 같은 텍스트가 검색될 수도 있지만, "ega\.att\.com" 이라고 검색하면 원하는 결과를 얻을 수 있습니다.  

    '?' : 바로 앞의 문자가 있거나 혹은 없어도 매칭. 예를 들어 'colou?r" 로 표현할 경우, color, colour 모두 매칭됨.

    '+' : 바로 앞의 문자가 한개 이상 반복되는 경우 매칭됨. 예를 들어 'colo+r' 로 표현할 경우, color, coloor, colooor 이 매칭됨. 하지만 colr 은 'o' 가 하나도 없으므로 실패함.

    '*' : 바로 앞의 문자가 0 개 이상 반복되는 경우에 매칭됨. 예를 들어 'colo*r' 로 표현할 경우, color, coloor, colooor, colr 모두 매칭됨.


  2-3 리터럴 문자

    메타 문자가 뜻과 역활을 가진 문자라면 리터럴 문자는 특정한 뜻이 없는 문자입니다. 우리가 흔히 말하는 텍스트 입니다. 

정규 표현식을 사용하는 이유중의 하나가 텍스트를 편하게 다루기 위함이고 메타 문자도 그 목적을 위한 수단입니다. 




예제

  ^cat$ : cat 만 적혀 있는 문자열

  ^$ : 비어 있는 행

  ^ : 모든 행

  <H[12345]> : <H1>, <H2>, <H3>, <H4>, <H5> 태그 찾아줌



사이트

http://regexlib.com/

http://www.zytrax.com/


'development' 카테고리의 다른 글

[Kernel] Kbuild system  (0) 2013.07.12
[kernel] __read_mostly?????  (0) 2013.05.08
[kernel] initrd/initramfs 편집하기.  (0) 2012.05.29
[u-boot] u-boot 사용법  (0) 2012.03.08
[etc] 네트웍 용어 정리  (0) 2012.03.06
블로그 이미지

김유석0

,