정규표현식(Regular Expression)에 대하여 - 문자그룹, 특정문자와 범위, 서브패턴 (5~10)
본 포스팅은 생활코딩님의 정규표현식 토픽을 공부하고 정리한 내용입니다.
본 포스팅의 패턴(Page) 및 설명은 http://zvon.org/comp/r/tut-Regexp.html#Pages~Contents 를 참고했습니다.
정규표현식 패턴들
Page 5
기호 .은 모든 특성(문자, 공백, 기호 등)을 검출합니다.
Source : Regular expressions are powerful!!!
Case1
Regular Expression | . |
First match | Regular expressions are powerful!!! |
All match | Regular expressions are powerful!!! |
따라서 .은 처음에 맨 앞 텍스트 R을 검출하고 그 후, 모든 문자를 검출합니다.
Case2
Regular Expression | ...... |
First match | Regular expressions are powerful!!! |
All match | Regular expressions are powerful!!! |
...... 처럼 .이 6개가 있다면 First match 에서 앞 6 글자 Regula를 검출합니다. 그리고 6개씩 검출을 하다보면
(Regula/r expr/ession/s are /powerf///ul!!!) ul!!!은 5글자이므로 검출이 안됩니다. 따라서 'ul!!!'을 제외한
'Regular expressions are powerf' 만 검출됩니다.
Page 6
기호 .이 아닌 문자.을 검출하고 싶을 때도 마찬가지로 \를 통해 escaping 을 해주면 됩니다.
Source : O.K.
Case1
Regular Expression | . |
First match | O.K. |
All match | O.K. |
Case2
Regular Expression | \. |
First match | O.K. |
All match | O.K. |
Case3
Regular Expression | \..\. |
First match | O.K. |
All match | O.K. |
\..\.은 문자.과 문자. 사이에 .이 있는 형태로써 .과 . 사이의 모든 특성(any character)을 검출합니다.
따라서 . 과 . 사이에 있는 K를 검출합니다.
Page 7
기호 "[]" 안에 있는 요소 중 하나가 포함된다면 그 텍스트는 검출됩니다.
Source : How do you do?
Case1
Regular Expression | [oyu] |
First match | How do you do? |
All match | How do you do? |
대괄호 [] 안에 oyu 가 있기때문에 처음엔 o를, 결국엔 o , y, u를 모두 검출합니다.
Case2
Regular Expression | [dH]. |
First match | How do you do? |
All match | How do you do? |
[dH]. 는 [dH] 하나와 . 하나를 합해 두개의 문자를 의미합니다.
따라서 How do you do? 에서 d나 H를 검출하고 .이 있기때문에 d나 H의 뒤 까지 두 문자를 검출합니다.
Case3
Regular Expression | [owy][yow] |
First match | How do you do? |
All match | How do you do? |
[owy][yow]는 o, w, y 중 하나와 y, o, w 하나를 포함하는 텍스트를 검출하는 것입니다.
따라서 ow, yo 를 검출합니다. do는 o가 yow를 포함하지만 d가 owy를 포함하지 못하기 때문에 검출되지않습니다.
Page 8
기호 "-" 을 통해 대괄호 안에서 range를 표현할 수 있습니다.
Source : ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz 0123456789
Case1
Regular Expression | [C-K] |
First match | ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 |
All match | ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 |
[C-K]는 [CDEFGHIJK]와 정확히 일치합니다.
Regular Expression | [C-Ka-d2-6] |
First match | ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 |
All match | ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 |
[C-Ka-d2-6]은 [C-K], [a-d], [2-6]을 연속으로 실행한 것과 일치합니다.
Page 9
9페이지에서는 ^의 다른 기능에 대해서 알아봅시다.
^을 대괄호 안에서 쓰게되면 부정의 의미로 사용됩니다.
Source : ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz 0123456789
Case1
Regular Expression | [^CDghi45] |
First match | ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 |
All match | ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 |
따라서 [^CDghi45]는 CDghi45 을 제외한 텍스트를 검출합니다.
Case2
Regular Expression | [^W-Z] |
First match | ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 |
All match | ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 |
[^W-Z]는 마찬가지로 [W-Z]을 제외한 텍스트를 검출합니다.
Page 10
( ) 와 | 를 통해 텍스트를 검출할 수 있습니다.
Source : Monday Tuesday Friday
Case1
Regular Expression | (on|use|rida) |
First match | Monday Tuesday Friday |
All match | Monday Tuesday Friday |
(on|use|rida)는 on 과 use 와 rida를 검출합니다.
Case2
Regular Expression | (Mon|Tues|Fri)day |
First match | Monday Tuesday Friday |
All match | Monday Tuesday Friday |
(Mon|Tues|Fri)day 는 Mon, Tues, Fri를 검출함과 동시에 day를 같이 검출합니다.
따라서 (Mon|Tues|Fri)day 는 (Monday|Tuesday|Friday)와 일치합니다.
Case3
Regular Expression | ..(id|esd|nd)ay |
First match | Monday Tuesday Friday |
All match | Monday Tuesday Friday |
..(id|esd|nd)ay 또한 앞서 배운 것처럼 id, esd, nd 와 함께 ay를 검출함과 동시에 ..를 통해 앞의 두 글자도 같이 검출합니다.
출처
Regular Expression and its importance in programming | Geekboots
Regular Expression is the most important part of programming - Geekboots
www.geekboots.com
정규표현식 패턴들 - 생활코딩
본 수업은 zvon의 정규표현식 tutorials를 이용한다. 실제 강의는 동영상을 참고하자. zvon은 아래의 URL을 통해서 접근 할 수 있다. http://zvon.org/comp/r/tut-Regexp.html#Pages~Contents 아래는 인터렉티브하게 정
opentutorials.org
Regular Expressions Tutorial @ZVON.org
zvon.org