'패턴 탐지'에 해당되는 글 1건

  1. 2011.03.30 [프로그래맹] 정규표현식(Regular Expression) - 중급

 정규표현식이란?
특수한 텍스트 패턴에 일치하는지 여부를 검사하거나, 텍스트 내에서 특정 패턴과 일치하는 텍스트를 찾기 위해 사용하는 표현식
요즘은 어지간한 어플리케이션에서 모두 지원하고 있다.

정규표현식 툴
물론 돈을 주고 산다면 다양한 기능과 화려한 인터페이스를 자랑하는 툴도 많다. (RegexBuddy)
하지만.. 우리는 공짜를 좋아하기 때문에..
공짜인 "Rad RegexDesigner"를 추천한다

1. 바로 다운받아 사용하고 싶다면  (첨부파일 클릭)Rad.RegexDesigner.Setup.1.4.exe
2. 사이트에가서 설명을 보고 받고 싶다면..  (홈페이지 주소 클릭)

사용법은  "Input Text"에 문자열을 넣고 "Regular Expression"에 정규표현식을 넣은 후
상단에 있는 녹색 재생 버튼을 클릭하면 된다.
매칭 여부는 우측에 있는 "Match Results"에서 확인 가능하다"

예제의 경우 전체 문자열에서 정규표현식에 의해 매칭된 문자열이 네 개로 나온다.



그럼 중급 정규표현식에 대해 알아보자


1. Group ( ) 
특정 패턴을 묶어서 반복 기호등과 함께 사용
 

여러 문자 중 하나만 선택적으로 매칭하고자 할 때 사용.
====================================
  
표현식   ba(na)*
  
문자열  ba na bana banana nana bananana
====================================
====================================
  
표현식   ba(na)+

  문자열  ba na bana banana nana bananana
 ====================================


2. 선택 지정 ( | ) 
괄호로 묶인 그룹 내에서 | 으로 나뉘어진 여러 개의 패턴  하나와 일치하는 것을 가리킨다
====================================
  
표현식   (eg|sa|be)g
  
문자열  egg eng sag sig beg bag
====================================
 

3. Group 참조  \숫자  (backreference)
 Group
으로 지정된 내용을 뒤에 \숫자의 형식으로 재 사용하는데 사용.
 ====================================
  
표현식   (h.t)\1
  
문자열  hathat hitbit hothot hutcut

  표현식   \d\d(\d\d)-\1-\1
  
문자열  2011-11-11
====================================


4.
반복 문자 탐지  Greedy, Lazy
 
반복 문자 개수를 지정하는 방법은 크게 Greedy방식과 Lazy방식으로 나뉘어진다.
 Greedy
 방식은 가능한 최대의 것을 선택하고,  Lazy방식은 가능한 최소의 것을 선택한다.
 Greedy
 방식뒤에 ? 붙이면 Lazy방식이 된다.

-Greedy 방식
====================================
  
표현식   <.*>
  
문자열  Regex <b>Greedy</b> Style
====================================
-Lazy
방식

====================================
  
표현식   <.*?>
  
문자열   Regex <i>Lazy</i> Style
====================================
-
사용

==================
 Greedy  |   Lazy 
==================
  *         |     *?
  +         |    +?
  ?         |     ??
 \d+       |   \d+?
 {n,m}    |   {n,m}?
==================

5.주요 Escape 문자 목록
 \t      
 문자, Tab, \u0009 
 \r     
 바꿈 문자, Carriage Return, \u000D 
 \n     
 바꿈 문자, Line Feed, \u000A 
 \b     [ ] 안에서 사용될 때는 백스페이스 문자, Backspace, \u0008
         [ ]
 밖에서 사용될 때는  단어 경계(Word Boundary), 즉 단어의 시작과 끝 빈문자에 매칭( \bhit => hit 과 매칭)
       
 Pattern에서 사용될 때는 항상 백스페이스 문자
 \\     \
 문자 자체를 가리킬  사용
       
비슷한 사용법 \.   \*   \+   \?   \^   \$   \(   \)   \{   \}   \[   \] 


6. 주요 특수문자 목록 

 특수문자  문자 클래스  설명
  \w [0-9a-zA-Z_]   영문자, 숫자, 언더바(_) 
  \W [^0-9a-zA-Z_]  영문자, 숫자, 언더바(_) 이외 
  \s [\t\n\r\f]  공백( 반각 스페이스, 탭, 개행) 
  \S [^\t\n\r\f] 공백 이외 
  \d [0-9]  숫자 
  \D [^0-9] 숫자 이외

 


참고 사이트 Joinc Wiki     <= 클릭

Posted by KT한
,