컴퓨터 공부/기타

정규식 표현

나정_ 2012. 5. 22. 12:18

******** 일단은 단순형 정규식이다. ********

1. "."

. 은 임의의 문자 하나를 나타낸다.

. 이 있는 곳에는 반드시 하나의 문자가 매치되어야 한다.


즉 a.b 는, 

aib, axb ... 등과 매치된다. ab 는 매칭되지 않는다.


2. "*"

* 는 * 바로 앞에 있는 문자가 없거나, 하나 이상 반복하는 패턴을 말한다. 

즉 ab*c 는,

ac, abc, abbc, abbbc...등과 매치된다.


3. "+"

+ 는 *과 비슷한 기능을 가진다. 

그러나 * 가 바로앞에 있는 문자가 없거나, 하나 이상 반복하는 패턴임에 반해

+ 는 하나 이상 반복하는 패턴에만 해당한다. 

즉 ab*c 는,

abc, abbc, abbbc ..  등과 매치된다. 




4. "?"

? 는 ? 앞의 문자가 있거나 없거나 둘중의 하나인 패턴이다.

즉 ab?c 는,

abc, ac와 매치된다. 


5. "^"

^ 는 ^ 뒤에 오는 문자열로 시작해야 하는 패턴이다.

즉 ^aa 는,

aa bb, aa cc 등과 매치된다.


6. "$"

$ 는 ^ 와는 반대로 앞에 오는 문자열로 끝나야 하는 패턴이다.

즉 aa$는

bb aa, cc aa  등과 매치된다.


******** 다음은 다중형 정규식이다 ********

1. "[]"

[] 안의 문자와 매칭되는 패턴을 찾는다.


단순 사용법은 다음과 같다.

[abc] 인 경우, a, b, c 라는 문자와 매칭이 되면 된다. 

즉 a, b, c, ab, abc 등이 되겠다. 


조금 응용하면 다음과 같은 검증이 가능하다.

[a-z] 모든 소문자를 검색,

[A-Z] 모든 대문자를 검색,

[0-9] 모든 숫자를 검색,

이를 활용하면,

^[a-zA-Z0-9] 대문자, 소문자, 숫자로만 시작하는 모든 문자열 검색


한가지 주의할 점.

[] 안에 ^ 기호가 오면 []안의 문자를 제외한 문자를 찾으라는 의미가 된다.

즉[^abc]de 는 a,b,c라는 문자가 들어가지 않는 .de와 동일한 의미가 된다.

dde, ede, fde... 등이 되겠다.


2. "{}"

{} 는 {} 안에 입력 된 숫자만큼 {} 앞의 문자열을 반복한 패턴을 말한다.

즉 ab{3}c 는,

abbbc 와 매칭된다.


덧붙여 {} 는 반복갯수의 범위를 지정가능하다.

{3,} 이면 3번 이상 반복

{3,5} 이면 3번 이상 , 5번 이하 반복을 의미한다. 


3. "()"

() 는 ()안의 문자열을 하나의 문자로 인식하여 본다.

즉 aa(bb){2}cc 인 경우

aabbbbcc와 매칭이 된다고 인식하면 된다.


******** 이상하게 홀로 떨어져 있는  정규식. ********

1. "|"

| 는 보통의 경우 그러하듯 or 연산자를 나타낸다.

즉 aa|bb 의 경우,

aa, bb, aabb, ccbb, aacc 등과 매칭된다.


2. 앞에서도 살짝 언급 된 적이 있는 패턴문자 클래스

[a-zA-Z] 모든 영문자

[[:alpha:]] \p{Alpha}

[0-9] 모든 숫자

[[:digit:]] \p{Digit}

[a-zA-Z0-9] 영문자와 숫자

[[:alnum:]] \p{Alnum}

공백

[[:space:]] \p{Space}


3. 위에서 사용한 특수문자를 패턴에 넣으려면

\ 문자 사용

\를 패턴에 넣으려면 \\ 사용