정규 표현식 설명(예제포함)

예제 테스트는 아래 DotStar.exe 를 다운 받으셔서 해보시길 바랍니다.

 
문자지정 . 사용예제

 . 은 아무 문자나 1개를 가리킨다.
 하지만 "줄바꿈 문자"는 제외된다.
====================================
  Find   h.t
  Replace 123
  Source  hat halt hit heat hot
  Result  123 halt 123 heat 123
====================================
  Find   h..t
  Replace 1234
  Source  hat halt hit heat hot
  Result  hat 1234 hit 1234 hot
====================================


문자지정 [ ] 사용예제
 [ ] 은 그 안에 있는 문자중 아무것 1개를 가리킨다.
 [abc]    a,b,c 중 아무것이나 1개
 [1234]    1,2,3,4 중 아무것이나 1개
 [a-z]    알파벳 소문자 중 아무것이나 1개
 [A-Z]    알파벳 대문자 중 아무것이나 1개
 [0-9]    숫자 중 아무것이나 1개
 [a-zA-Z]   알파벳 소문자나 대문자 중 아무것이나 1개
 [a-zA-Z0-9_] 알파벳, 숫자, 밑줄문자 중 아무것이나 1개
====================================
  Find   h[aiu]t
  Replace 123
  Source  hat het hit hot hut
  Result  123 het 123 hot 123
====================================


문자지정 [^ ] 사용예제
 [^ ] 은 그 안에 있는 문자를 제외한 문자중 아무것 1개를 가리킨다.
 [^abc]    a,b,c 이외의 문자 중 아무것이나 1개
 [^1234]   1,2,3,4 이외의 문자 중 아무것이나 1개
 [^a-z]    알파벳 소문자 이외의 문자 중 아무것이나 1개
 [^A-Z]    알파벳 대문자 이외의 문자 중 아무것이나 1개
 [^0-9]    숫자 이외의 문자 중 아무것이나 1개
 [^a-zA-Z]  알파벳 소문자나 대문자 이외의 문자 중 아무것이나 1개
 [^a-zA-Z0-9_]알파벳, 숫자, 밑줄문자 이외의 문자 중 아무것이나 1개
====================================
  Find   h[^aiu]t
  Replace 123
  Source  hat het hit hot hut
  Result  hat 123 hit 123 hut
====================================


개수지정 * 사용예제
 * 은 바로 앞에 있는 문자가 0개 또는 그 이상 있는 것을 가리킨다.
 {0,}과 같은 의미이다.
====================================
  Find   ha*t
  Replace 123
  Source  ht hit hat hot haat hut haaaaat
  Result  123 hit 123 hot 123 hut 123
====================================


개수지정 + 사용예제
 + 은 바로 앞에 있는 문자가 1개 또는 그 이상 있는 것을 가리킨다.
 {1,}과 같은 의미이다.
====================================
  Find   ha+t
  Replace 123
  Source  ht hit hat hot haat hut haaaaat
  Result  ht hit 123 hot 123 hut 123
====================================


개수지정 ? 사용예제
 ? 은 바로 앞에 있는 문자가 0개 또는 1개 있는 것을 가리킨다.
 {0,1}과 같은 의미이다.
====================================
  Find   ha?t
  Replace 123
  Source  ht hit hat hot haat hut haaaaat
  Result  123 hit 123 hot haat hut haaaaat
====================================


개수지정 {n} 사용예제
 {n} 은 바로 앞에 있는 문자가 n개 있는 것을 가리킨다.
====================================
  Find   ha{2}t
  Replace 123
  Source  ht hit hat hot haat hut haaaaat
  Result  ht hit hat hot 123 hut haaaat
====================================


개수지정 {n,} 사용예제
 {n,} 은 바로 앞에 있는 문자가 n개 이상 있는 것을 가리킨다.
====================================
  Find   ha{2,}t
  Replace 123
  Source  ht hit hat hot haat hut haaaaat
  Result   ht hit hat hot 123 hut 123
====================================


개수지정 {n,m} 사용예제
 {n,m} 은 바로 앞에 있는 문자가 n개 이상, m개 이하 있는 것을 가리킨다.
====================================
  Find   ha{2,4}t
  Replace 123
  Source  ht hat haat haaat haaaat haaaaat
  Result  ht hat 123 123 123 haaaaat
====================================


개수지정 Greedy방식과 Lazy방식
 문자 개수를 지정하는 방법은 크게 Greedy방식과 Lazy방식으로 나뉘어진다.
 Lazy방식은 Non-Greedy 방식이라고 한다.
 Greedy 방식은 욕심이 많아서 가능한 최대의 것을 선택한다.
 Lazy방식은 게을러서 가능한 최소의 것을 선택한다.
 Greedy 방식뒤에 ?을 붙이면 Lazy방식이 된다.
==================
= Greedy  =   Lazy     =
==================
  *     *?
  +     +?
  ?     ??
  {n}    {n}?
  {n,}    {n,}?
  {n,m}   {n,m}?
==================
 * 은 Greedy 방식으로, 바로 앞에 있는 문자가 0개 또는 그 이상 있는것중, 가능한 최대의 것을 가리킨다.
 *? 은 Lazy 방식으로, 바로 앞에 있는 문자가 0개 또는 그 이상 있는 것 중, 가능한 최소의 것을 가리킨다.
 + 은 Greedy 방식으로, 바로 앞에 있는 문자가 1개 또는 그 이상 있는 것 중, 가능한 최대의 것을 가리킨다.
 +? 은 Lazy 방식으로, 바로 앞에 있는 문자가 1개 또는 그 이상 있는 것 중, 가능한 최소의 것을 가리킨다.
 ? 은 Greedy 방식으로, 바로 앞에 있는 문자가 0개 또는 1개 있는 것 중, 가능한 최대의 것을 가리킨다.
 ?? 은 Greedy 방식으로, 바로 앞에 있는 문자가 0개 또는 1개 있는 것 중, 가능한 최소의 것을 가리킨다.
 {n} 은 Greedy 방식으로, 바로 앞에 있는 문자가 n개 있는 것을 가리킨다.
 {n}? 은 Lazy 방식으로, 바로 앞에 있는 문자가 n개 있는 것을 가리킨다.
 {n} 과 {n}? 은 동일하다.
 {n,} 은 Greedy 방식으로, 바로 앞에 있는 문자가 n개 이상 있는 것 중, 가능한 최대의 것을 가리킨다.
 {n,}? 은 Lazy 방식으로, 바로 앞에 있는 문자가 n개 이상 있는 것 중, 가능한 최소의 것을 가리킨다.
 {n,m} 은 Greedy 방식으로, 바로 앞에 있는 문자가 n개 이상, m개 이하 있는 것 중, 가능한 최대의 것을 가리킨다.
 {n,m}? 은 Lazy 방식으로, 바로 앞에 있는 문자가 n개 이상, m개 이하 있는 것 중, 가능한 최소의 것을 가리킨다.
 
 .* 과 .*? 은 일반적으로 많이 쓰이는 정규표현식 패턴이다.
 . 은 "줄바꿈문자"를 제외한 아무 문자나 1개를 가리킨다.
 * 은 Greedy 방식으로, 바로 앞에 있는 문자가 0개 또는 그 이상 있는 것 중, 가능한 최대의 것을 가리킨다.
 *? 은 Lazy방식으로, 바로 앞에 있는 문자가 0개 또는 그 이상 있는 것 중, 가능한 최소의 것을 가리킨다.
 .* 은 Greedy 방식으로, "줄바꿈문자"를 제외한 아무 문자나 0개 또는 그 이상 있는 것 중, 가능한 최대의 것을 가리킨다.
 .*? 은 Lazy방식으로, "줄바꿈문자"를 제외한 아무 문자나 0개 또는 그 이상 있는 것 중, 가능한 최소의 것을 가리킨다.
====================================
  Find   <.*>
  Replace 123
  Source  Regex <b>Greedy</b> Style
      Regex <i>Lazy</i> Style
  Result  Regex 123 Style
      Regex 123 Style
====================================
 <.*> 과 일치하는것 : <로 시작하고, 중간에 아무 문자나 0개 이상 들어있고, >로 끝나는 것 중, 가능한 최대의것
          <b>Greedy</b>, <i>Lazy</i>

====================================
  Find   <.*?>
  Replace 123
  Source  Regex <b>Greedy</b> Style
      Regex <i>Lazy</i> Style
  Result  Regex 123Greedy123 Style
      Regex 123Lazy123 Style
====================================
 <.*?> 과 일치하는것 : <로 시작하고, 중간에 아무 문자나 0개 이상 들어있고, >로 끝나는 것 중, 가능한 최소의것
          <b>, </b>, <i>, </i>

 .+ 과 .+? 도 일반적으로 많이 쓰이는 정규식 패턴이다.
 . 은 "줄바꿈문자"를 제외한 아무 문자나 1개를 가르킨다.
 + 은 Greedy 방식으로, 바로 앞에 있는 문자가 1개 또는 그 이상 있는 것 중, 가능한 최대의 것을 가리킨다.
 +? 은 Lazy 방식으로, 바로 앞에 있는 문자가 1개 또는 그 이상 있는 것 중, 가능한 최소의 것을 가리킨다.
 .+ 은 Greedy 방식으로, "줄바꿈문자"를 제외한 아무 문자나 1개 또는 그 이상 있는 것 중, 가능한 최대의 것을 가리킨다.
 .+? 은 Lazy방식으로, "줄바꿈문자"를 제외한 아무 문자나 1개 또는 그 이상 있는 것 중, 가능한 최소의 것을 가리킨다.
 


위치지정 ^ 사용예제
 ^ 은 줄의 제일 처음을 가리킨다.
====================================
  Find   ^h.t
  Replace 123
  Source  hat hit hot
  Result  123 hit hot
====================================


위치지정 $ 사용예제
 $ 은 줄의 제일 마지막을 가리킨다.
====================================
  Find    h.t$
  Replace 123
  Source  hat hit hot
  Result  hat hit 123
====================================


한 줄 전체 선택 ^.*$ 사용예제
 ^.*$ 은 줄 처음과 끝사이에 아무 문자나 0개 이상 있는것을 의미하므로, 결과적으로 한 줄 전체를 가리킨다.
 아무것도 없는 빈 줄도 해당된다.
====================================
  Find   ^.*$
  Replace 123
  Source  Regular Expressions
      Greedy Style
      Lazy Style
  Result  123
      123
      123
====================================


Group 지정 ( ) 사용 예제
 ( ) 은 Group을 지정할때 사용된다.
 Group은 개수 지정 패턴과 함께 사용될때, 한개의 문자 처럼 취급된다.
====================================
  Find   ba(na)*
  Replace 123
  Source  ba na bana banana nana bananana
  Result  123 na 123 123 nana 123
====================================
====================================
  Find   ba(na)+
  Replace 123
  Source  ba na bana banana nana bananana
  Result  ba na 123 123 nana 123
====================================


Group Referencing $1 사용예제
 Group으로 지정된 내용을 Find Pattern 이나 Replace Pattern 안에서 다시 사용하는 것을 Referencing이라고 한다.
 $1, $2, $3 ...  이런 스타일의 요소들은 Group으로 지정된 내용을 Replace Pattern 안에서 Referencing할 때 사용된다.
====================================
  Find   h(.*?)t
  Replace $1
  Source  hat halt hit heat hot
  Result  a al i ea o
====================================
Replace Pattern에서 $1은 (.*?) Group에 해당하는 것을 가리킨다.


Group Referencing \1 사용예제
 Group으로 지정된 내용을 Find Pattern 이나 Replace Pattern 안에서 다시 사용하는 것을 Referencing이라고 한다.
 \1, \2, \3 ...  이런 스타일의 요소들은 Group으로 지정된 내용을 Replace Pattern 안에서 Referencing할 때 사용된다.
====================================
  Find   (h.t)\1
  Replace 123
  Source  hathat hitbit hothot hutcut
  Result  123 hitbit 123 hutcut
====================================
Find Pattern에서 \1은 (h.t) Group에 해당하는 것을 가리킨다.
결과적으로 h로 시작하고, 중간에 아무 문자나 하나 들어가고, t로 끝나는 단어가 두번 반복되는 것이 123으로 바뀐다.


OR 선택 지정 ( | ) 사용 예제
 ( | ) 은 | 으로 나뉘어진 여러개의 Pattern중에서 하나와 일치하는 것을 가리킨다.
====================================
  Find   (eg|sa|be)g
  Replace 123
  Source  egg eng sag sig beg bag
  Result  123 eng 123 sig 123 bag
====================================


주요 Escape 문자 목록
 \u0020   16진수 Unicode 문자, 항상 4자리로 사용
 \x20    16진수 ASCII 문자, 항상 2자리로 사용
 \t      탭 문자, Tab, \u0009
 \r     줄 바꿈 문자, Carriage Return, \u000D
 \n     줄 바꿈 문자, Line Feed, \u000A
 \s     공백 문자, White-Space Character, \t \r \n 스페이스 포함
 \S     \s 이외의 문자
 \d     숫자, [0-9] 과 같은 의미
 \D    \d 이외의 문자, [^0-9] 과 같은 의미
 \w     Word Character, [a-zA-Z0-9_] 과 한글 일본어 중국어 등의 유니코드 문자 포함
 \W     \w 이외의 문자
 \b     [ ] 안에서 사용될 때는 백스페이스 문자, Backspace, \u0008
      [ ] 밖에서 사용될 때는 \w 과 \W 사이의 경계, Word Boundary
      Replace Pattern에서 사용될 때는 항상 백스페이스 문자
 \\     \ 문자 자체를 가리킬 때 사용
      비슷한 사용법 \.   \*   \+   \?   \^   \$   \(   \)   \{   \}   \[   \]
 

Word Boundary \b 사용 예제
 \b는 \w와 \W 의 경계를 가리킨다.
 \b는 문자 자체를 가리키는 것이 아니다. ( ^이나 $이 문자 자체를 가리키는 것이 아닌것과 동일하다.)
 주로 단어가 시작하는 것을 가리키거나, 단어가 끝나는 것을 가리킬때 사용된다.
====================================
  Find   \b3
  Replace x
  Source  333 333 333
  Result  x33 x33 x33
====================================
\b3 과 일치하는것 : 단어의 제일 앞에 있는3
====================================
  Find   3\b
  Replace x
  Source  333 333 333
  Result  33x 33x 33x
====================================
3\b 과 일치하는것 : 단어의 제일 뒤에 있는3


줄 바꿈 문자 \r\n 사용예제
 .NET기반의 정규식 도구는 많이 있지만, Replace Pattern에서 \r 나 \n 같은 Escape Squence 문자를 정확하게 다루는 도구는 eLiner가 거의 유일하다.
 다른 .NET기반의 정규식 도구들은 대부분 Find Pattern에서는 Escape Sequence 문자를 잘 다루지만, Replace Pattern에서는 Escape Sequence 문자를 제대로 다루지 못한다.
====================================
  Find   <br>
  Replace \r\n
  Source  spring<br>summer<br>fall<br>winter
  Result  spring
      summer
      fall
      winter
====================================

출처 : http://rebirth.egloos.com/511823 (청지인님의 이글루)

'Study > AutoHotKey' 카테고리의 다른 글

한영 전환키 check  (0) 2011.10.18
Script> 좌표/색 도우미  (2) 2011.10.17
AHK 자주사용하는 명령어  (0) 2011.10.17
내장변수  (0) 2011.10.10
키보드 스캔코드  (0) 2011.10.10
Gui는 어렵다?  (0) 2011.10.09
정규 표현식  (0) 2011.10.09
핑테스트 하는것  (0) 2011.10.09
시계  (0) 2011.10.09
AutoHotKey  (0) 2011.10.09