소프트웨어/개발관련

정규 표현식을 배워보자 #03 이스케이핑 과 문자그룹

한번쯤은해보자 2019. 1. 16. 13:07

원문은 ZVON의 Regular Expressions Tutorial을 참조하면됨

Page 4

정규식에서 사용되는 특별한 의미가 있는 문자들을 검색하고 싶을때는 \를 사용한다

Source

$12$ \-\ $25$

문장의 시작을 의미하는 ^과 문장이 끝을 의미하는 $와 같이 정규 식에서 사용되는 특별한 의미로 사용되는 문자열을 검색하고 싶을떄

Test Case

Case 1

Regular Expression:

^$

First match:

$12$ \-\ $25$

All matches:

$12$ \-\ $25$

$로 시작하는 문자를 검색하고 싶어서 ^$라고 사용을 했지만, ^$모두 특별한 의미로 해석되어 아무것도 검색되지 않음

Case 2

Regular Expression:

\$

First match:

$12$ \-\ $25$

All matches:

$12$ \-\ $25$

$을 문장의 끝이 아닌 $문자로 해석하기 위해서 \를 사용하여 \$로 표시하면 검색할 문자열에 있는 $를 검색

Case 3

Regular Expression:

^\$

First match:

$12$ \-\ $25$

All matches:

$12$ \-\ $25$

문장중 $로 시작하는 문자를 검색

Case 4

Regular Expression:

\$$

First match:

$12$ \-\ $25$

All matches:

$12$ \-\ $25$

문장중 $로 끝나는 문자를 검색

Case 5

Regular Expression:

\\

First match:

$12$ \-\ $25$

All matches:

$12$ \-\ $25$

\를 검색하기 위해서는 \\를 사용

 

 Page 5

특정 문자가 아닌 모든 문자는 . 으로 표시한다.

Source

Regular expressions are powerful!!!

문장에서 일정 개수의 문자를 검색하려고 할경우

Test Case

Case 1

Regular Expression:

.

First match:

Regular expressions are powerful!!!

All matches:

Regular expressions are powerful!!!

.은 문자 1개를 의미

Case 2

Regular Expression:

......

First match:

Regular expressions are powerful!!!

All matches:

Regular expressions are powerful!!!

. 의 개수만큼 즉, …...는 문자 6개를 의미하며, All match는 문장을 문자 6개씩 잘라서 인식

 

 Page 6

모든 문자를 의미하는  . 을 검색하고 싶을 경우

Source

O.K.

.도 정규 표현식에서 특수한 의미로 사용되므로 .을 검색하기 위해서는 \와 같이 사용

Test Case

Case 1

Regular Expression:

.

First match:

O.K.

All matches:

O.K.

.은 문자 1개를 의미

Case 2

Regular Expression:

\.

First match:

O.K.

All matches:

O.K.

문장 내에서 .을 검색하려면 \를 사용하여 이스케이핑 시킴

, \. 와 같이 표시하면 문장내의 .을 검색

Case 3

Regular Expression:

\..\.

First match:

O.K.

All matches:

O.K.

정규 표현식\..\.을 살펴보면 \..\.로 잘라서 해석되는데,

앞에있는 \..을 이스케이핑 시킨것이고, 가운데의 .은 모든 문자를

끝부분의 \. .을 이스케이핑 시킨게 되어서

결국, 정규 표현식\..\...사이에 임의의 문자 1개가 있는 경우로 해석된다

 

Page 7

대괄호 [ ]안에 들어가는 문자들 중 1개만 해당되어도 검색하고 싶을 경우

Source

How do you do?

문장에서 일부 문자들이 있는지 검색하고 싶을 경우 [ ]안에 기술하면 되며, [ ]에 있는 문자들이 몇 개이든 상관 없이 1개의 문자와 매칭됨, 1개의 대괄호 [ ]  문장에서 1개 문자임

Test Case

Case 1

Regular Expression:

[oyu]

First match:

How do you do?

All matches:

How do you do?

문장중에 o 또는 Y 또는 u가 있을 경우를 검색

Case 2

Regular Expression:

[dH].

First match:

How do you do?

All matches:

Hodo you do?

정규 표현식 [dH]. 을 살펴보면[dH].으로 잘라서 해석되는데,

문장내에서 소문자 d, 또는 대문자 H로 시작하는 2개 문자를 의미

Case 3

Regular Expression:

[owy][yow]

First match:

How do you do?

All matches:

How do you do?

정규 표현식 [owy][yow]을 살펴보면, 2개의 문자인데 [ ]들의 조합해 보면

oy, oo, ow, wy, wo, ww, yy, yo, yw 가 문장에 있는지 검색 하게됨

 

 Page 8

대괄호 [ ]안에 들어가는 문자들의 범위를 지정하고 싶을때는 를 사용하여 지정할 수 있음

Source

ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789

 [ ]안에 지정해야할 문자들이 많을 경우 를 사용하여 지정할 문자의 범위를 지정할 수 있음

Test Case

Case 1

Regular Expression:

[C-K]

First match:

ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789

All matches:

ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789

대문자 C~K에 해당하는C,D,E,F,G,H,I,J,K문자들을 의미

Case 2

Regular Expression:

[CDEFGHIJK]

First match:

ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789

All matches:

ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789

대문자 C~K에 해당하는C,D,E,F,G,H,I,J,K문자들을 의미

, Case1[C-K] Case2[CDEFGHIJK]는 동일한 의미임

Case 3

Regular Expression:

[a-d]

First match:

ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789

All matches:

ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789

소문자 a~d에 해당하는a,b,c,d 문자들을 의미

Case 4

Regular Expression:

[2-6]

First match:

ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789

All matches:

ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789

숫자 2~6에 해당하는2,3,4,5,6 문자들을 의미

Case 5

Regular Expression:

[C-Ka-d2-6]

First match:

ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789

All matches:

ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789

정규 표현식 [C-Ka-d2-6]는 대문자 C~K, 소문자 a~d, 숫자 2~6에 해당하는 문자를 검색

, 문장 내에서 C,D,E,F<G,H,I,J,K,a,b,c,d,2,3,4,5,6 문자들 중 하나를 의미