2009년 8월 5일 수요일

정규표현이란


정규표현이란........영어로는 Regular Expression 입니다.....ㅋㅋㅋ

간단하네욤. 정규적인 표현.ㅋ

 

그만할께염.ㅠㅠ

 

정규표현이란.....특정의 조건을 표현하는 문자열을 추상적으로 표현한 식 입니다.

주로 정규표현은 파일이름을 검색하거나 파일내용을 검색할때 사용되지요.

예로 로그인 아이디에 영어랑 숫자만 들어와야하는데 한글이나 특수 기호가 입력되었는지 아닌지를 검사할때 사용될 수 도 있습니다...^^

 

c 로 시작하고 6글자로 이루어져 있고, 두 번째 글짜가 ( 3 아니면 4 ) 로 이루어 져 있는 문자를 검색하고 싶을때 바로 정규표현의 위력은 발휘됩니다.

-> c[34]....

이렇게 하면 바로 위의 내용을 모두 만족하는 문자열을 검색 할 수 있는겁니다...신기하졈??

 

그럼 이제부터 짤막하게 정규표현식에 대해서 설명을 하겠습니다.

 

정규표현에서 문자

 

정규표현중에 문자라고 하는것은 영어 알파벳을 의미합니다.

abc 라고 하면 문자 abc 를 의미합니다.

 

임의의 문자 한글자

 

임의의 문자 한글자는 바로 . (쩜) 입니다.

예를들어  a...e 라고 한다면 abcde, adcbe, a123e 모두 가능합니다..

 

문자클래스

 

일련의 문자들의 집합을 표현할때는 [] (대괄호)를 사용합니다. 이렇게 대활호로 묶으면 문자 클래스 라고 부르죵

예를 들면

[123] 이라는 말은 1,2,3중에 한 문자를 의미합니다. 

a[bc]de 라고 한다면 abde , acde 모두 해당합니다.

 

 - (하이픈)을 사용해서 범위를 지정하는것도 가능합니다.

c[1-3]g 라고 한다면 c1g,c2g,c3g 를 의미합니다.

참고로 [0-9]는 숫자 한문자를 의미하구요, [a-z]는 알파벳 소문자 한문자를 의미합니다.

그럼 [A-Z]는 뭘까요???? 넹.....똑똑 하셔라....알파벳 대문자 한문자겠죵....ㅋㅋㅋ

그럼 알파벳 전체는 뭘까용?? --->[a-zA-Z] 입니다...( 어렵죵.ㅠㅠ);;

 

문두표현 문말표현

 

우리가 채팅중 웃을때 ^^ 이걸 많이 쓰는데요

정규표현에서 ^ 은 두가지 의미가 있습니다. 한가지는 문자열의 제일 처음 이라는 뜻 입니다.

^1 이라고 하면은 1로 시작하는 숫자를의미하겠죠

^[0-1]은 숫자로 시작하는 문자열이겠고

^[a-zA-Z] 라고 하면은 문자로 시작하는 문자열 이겠죵.

 

시작이 있으면 끝이 있는법 ...

끝은 $입니다. a$라고 하면 a라는 문자로 끝나는문자를 의미합니다.

 

^의 두번재 의미는 부정입니다.

다른 말로 옮기면 해당문자를 포함 하지 않는다......뭐 그런뜻이겠죵

대신 부정은 항상[] ( 대괄호 ) 안에서만 사용됩니다.

[^ab]라고 한다면 a로도 시작하지 않고 b로도 시작하지 않는...... 이라는 말이겠죵

 

그러니깐 ^ 표현은 두가지가 있으니 잘 살펴보셔야 할꺼에용...

 

반복문

 

이름 짓기가 좀 그래서 반복문이라고 지었습니다.

문자의 갯수가 몇개든 상관 없고 숫자든 뭐든 있다 ....라고 표현하고 싶을때는 * (별표) 를 사용합니다.

[a*d] 는 abcd, abced, azsdfwefxdfwedfsdfekfjsldkf244312d 도 가능합니다.

대충 이해가 가시죵.^^

 

마지막으로 특수문자입니다

 

지금까지 정규표현식을 사용해서 여러가지 규칙을 알아보았는데요 의문사항이 하나 생기시죠..!!??

바로 정규표현식에 사용되고 있는 문자들을 표현하려면 어떻게 해야 할까요....?? 입니다.

 

예를 들어서 a로 시작하고 $ 로 끝나는 문자를 표현하고싶다...그러면 a$ 로 적으면 될까요???

아니겠죵 이 표현은 a로 끝나는 문자열을 찾아서 나타낼껍니다.

그렇다면 어떻게 해야할까요???  바로 이스케이프 문자를 사용하면됩니다.  이름하야 / ( 역슬뤠쉬) 입니다.

a/$ 라고 적으면 바로  아까 표현하고 싶었던 a$ 라는 문자를 나타내게 됩니다....

 

정규표현의 예 입니다. (C#으로 짜봤습니다.)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

참고로, 정규표현 예제소스는 첨부파일로 올려놨습니다. 첨부파일을 참조하세요.

 

이상으로 정규표현에 대해서 알아보았습니다.

설명이 부족하다거나 의문사항이 있으신 분은 덧글을 달아주세요 보완하겠습니당..^^

 

 

댓글 없음:

댓글 쓰기