본문 바로가기

소프트웨어/개발관련

정규 표현식을 배워보자 #05 수량자 #1

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

Page 11

특정 패턴이 반복해서 등장하는 횟수를 지정할 수 있음

Source

aabc abc bc

수량자는 기본적으로 *, +, ? 가 있으며 검색하려는 문자열 뒤에 붙여서 사용

*0~n, +1~n번을 의미하며, ?0또는1번을 의미함

Test Case

Case 1

Regular Expression:

a*b

First match:

aabc abc bc

All matches:

aababbc

* 0~n을 의미하므로, 문자b앞에 a문자가 0에서 n 나오는 문자열을 검색

, b, ab, aab, aaab, aaaab등으로 구성되는 문자열이 검색을 의미함.

Case 2

Regular Expression:

a+b

First match:

aabc abc bc

All matches:

aababc bc

+ 1~n을 의미하므로, 문자 b앞에 a문자가 1에서 n 나오는 문자열을 검색

, ab, aab, aaab, aaaab등과 같이 a가 최소 1번이상 앞에 나오는 문자열 검색을 의미함.

Case 3

Regular Expression:

a?b

First match:

aabc abc bc

All matches:

aababbc

? 0또는 1을 의미하므로, 문자 b앞에 나타날 수 있는 a문자는 최대 1개임.

, b 또는 ab 문자열이 검색을 의미함

  

Page 12

특정 패턴이 반복해서 등장하는 횟수를 지정할 수 있음

Source

-@- *** -- "*" -- *** -@-

* 수량자에 대한 사용 예시

Test Case

Case 1

Regular Expression:

.*

First match:

-@- *** -- "*" -- *** -@-

All matches:

-@- *** -- "*" -- *** -@-

.* 는 임의의 문자가 0~n반복됨을 의미하므로, 모든 문자열을 검색하는 의미

Case 2

Regular Expression:

-A*-

First match:

-@- *** -- "*" -- *** -@-

All matches:

-@- *** -- "*" -- *** -@-

-문자와 -문자 사이에 A문자가 0~n을 반복되는 패턴이므로,

--, -A-, -AA-, -AAA- 등으로 구성되는 문자열이 검색을 의미함

Case 3

Regular Expression:

[-@]*

First match:

-@- *** -- "*" -- *** -@-

All matches:

-@- *** -- "*" -- *** -@-

[ ]안에 있는 -문자 또는 @문자가 0~n을 반복되는 패턴 의미하므로,

-@로 조합할 수 있는 문자열 검색을 의미

 

Page 13

특정 패턴이 반복해서 등장하는 횟수를 지정할 수 있음

Source

-@@@- * ** - - "*" -- * ** -@@@-

+ 수량자에 대한 사용 예시

Test Case

Case 1

Regular Expression:

\*+

First match:

-@@@- * ** - - "*" -- * ** -@@@-

All matches:

-@@@- * ** - - "*" -- * ** -@@@-

\*+에서 \**를 수량자가 아닌 *로 이스케이핑 시킨것이므로 *문자가 1~n반복됨을 의미하며, 문장내 *, **, ***, **** 등과 같이 *로 구성되는, 모든 문자열 검색을 의미함

Case 2

Regular Expression:

-@+-

First match:

-@@@- * ** - - "*" -- * ** -@@@-

All matches:

-@@@- * ** - - "*" -- * ** -@@@-

-문자와 -문자 사이에 @문자가 1~n을 반복되는 패턴이므로,

-@-, -@@-, -@@@-, -@@@@- 등으로 구성되는 문자열 검색을 의미함.

Case 3

Regular Expression:

[^ ]+

First match:

-@@@- * ** - - "*" -- * ** -@@@-

All matches:

-@@@- * ** - - "*" -- * ** -@@@-

[ ]안에 ^문자와 공백이 있는데, ^ [ ]안에서 사용되면 부정(Not)의 의미로 사용되므로, 공백이 아닌 문자가 1~n을 반복되는 문자열 검색을 의미함

 

Page 14 

특정 패턴이 반복해서 등장하는 횟수를 지정할 수 있음

Source

--XX-@-XX-@@-XX-@@@-XX-@@@@-XX-@@-@@-

? 수량자에 대한 사용 예시

Test Case

Case 1

Regular Expression:

-X?XX?X

First match:

--XX-@-XX-@@-XX-@@@-XX-@@@@-XX-@@-@@-

All matches:

--XX-@-XX-@@-XX-@@@-XX-@@@@-XX-@@-@@-

?에수량자가 0 또는 1을 의미하므로 -XX, -XXX, -XXXX 문자열 검색을 의미함

Case 2

Regular Expression:

-@?@?@?-

First match:

--XX-@-XX-@@-XX-@@@-XX-@@@@-XX-@@-@@-

All matches:

--XX-@-XX-@@-XX-@@@-XX-@@@@-XX-@@-@@-

-문자와 -문자 사이에 @문자가 0~1번을 반복하는 것이 3있으므로,

--, -@-, -@@-, -@@@-으로 구성된 문자열 검색을 의미함.

Case 3

Regular Expression:

[^@]@?@

First match:

--XX-@-XX-@@-XX-@@@-XX-@@@@-XX-@@-@@-

All matches:

--XX-@-XX-@@-XX-@@@-XX-@@@@-XX-@@-@@-

[ ]안에 ^문자와 공백이 있는데, ^ [ ]안에서 사용되면 부정(Not)의 의미로 사용고, 첫 문자가 @이 아니면서, 두번쨰문자가 @이거나 없고, 마지막은 @인 문자를 의미하므로 문자열중 @또는 @@으로 끝나는 문자들을 검색하는 의미