정규식을 써보자!
프로그래밍/소스 코드 | 2008/08/05 02:07

정규식을 설명하기 위해서 한가지 예를 들기로 한다.(http://www.npteam.net)

^ht{2}p:(/{2})w{3}(.)(n.{0,10})(?:com|net|(co.kr))
  1. 문장의 처음은 h로 시작한다.
  2. "t"글자가 연속 2번 출력된다.
  3. "p:" 가 출력된다.
  4. "/"가 연속 2번 출력된다.
  5. "w"가 연속 3번 출력된다.
  6. 아무글자 1글자를 그대로 출력한다.
  7. n으로 시작해서 최소 0에서 최대 10글자까지 아무글자나 출력한다.
  8. 맨 뒤에 종결 문자는 "com", "net", "co.kr" 3가지중 하나라도 만족하면 출력한다.
윈도우에서 모든것을 표현하는 *문자는 ".*"로 사용가능하다.

따라서 위의 정규식으로 출력되는 결과를 찾으면 다음과 같이 출력된다.


이 수식을 이용해서 VBScript에서 이용하려면 다음의 샘플 코드를 사용하시면 됩니다.

■ 정규식에 의해서 일치하는 문장이 있는지 없는지 판단하는 스크립트
Dim objRegExp
Set objRegExp = New RegExp
objRegExp.MultiLine = True
objRegExp.Pattern = "^ht{2}p:(/{2})w{3}(.)(n.{0,10})(?:com|net|(co.kr))"
 
SubjectString = "http://www.npteam.net"
 
If objRegExp.Test(SubjectString) Then
  ' Successful match
  MsgBox "Success"
Else
  ' Match attempt failed
  MsgBox "Failed"
End If


■ 정규식에 의해서 일치하는 문장을 리턴받고 싶을 경우
Dim ObjRegExp, MatchWords, ResultString
Set ObjRegExp = New RegExp
ObjRegExp.MultiLine = True
ObjRegExp.Pattern = "^ht{2}p:(/{2})w{3}(.)(n.{0,10})(?:com|net|(co.kr))"
 
SubjectString = "http://www.npteam.net"
 
Set MatchWords = ObjRegExp.Execute(SubjectString)
If MatchWords.Count >= 1 Then
  ResultString = MatchWords(0).Value
Else
  ResultString = "Nothing"
End If
 
MsgBox ResultString


이해를 돕기 위해 샘플 정규식을 한가지 소개하고자 한다.

■ 숫자 000 ~ 255
^([01][0-9][0-9]|2[0-4][0-9]|25[0-5])$
  1. 첫번째 자리의 숫자 (0, 1), 두번째 자리 숫자(0~9), 세번째 자리 숫자(0~9)
  2. 첫번째 자리의 숫자(2), 두번째 자리 숫자(0~4), 세번째 자리 숫자(0~9)
  3. 첫번째 자리의 숫자(2), 두번째 자리의 숫자(5), 세번째 자리의 숫자(0~5)

결국 각각 다음과 같은 범위를 제한하고 있다.

000 ~ 199, 200 ~ 249, 250 ~ 255

왜 이렇게 3단계로 분류해야 할까?
정규식은 숫자를 정수로 판단하는 것이 아니라 각각 하나의 문자로 판단하기 때문이다.
따라서 문자가 올 수 있는 범위를 세부적으로 제한함으로써 위와 같은 결과를 얻을 수 있다.

이외에도 정규식을 활용하면 수 많은 표현을 아주 간결하게 찾아낼 수 있다.

 
TTF 2008/08/05 03:04
http://www.regexbuddy.com/
정규식 검사하는 프로그램
TTF 2008/08/05 03:08
http://technet.microsoft.com/ko-kr/magazine/cc137729.aspx
마소 TechNet에 실린 정규식 관련 글
won 2008/08/05 09:31
http://weitz.de/regex-coach/
하루 2008/08/15 15:39
TTF 바쁘냐? 오늘 전화하니 안받드만 8월 18일날 서버 IDC 옴겨서 새벽부터 아침까지 접속 안될꺼거든 (미리 빽업받아놓는거도 좋구 ㅋㅋ) 일단 그리알고잇어
TTF 2008/08/15 23:02
ㅎㅎ 서버 통합 프로시저 작업하고 야근해서,
늦게까지 잠들었어요. 일어나니까 오후 2시 ㅎㅎ
indra 2008/08/19 00:37
하루 바쁘냐., 얼굴도 안보이더라.,.,ttf 마찬가지,,ㅡㅡㅋ
Name
Password
Homepage
  Secret
Description
 

BLOG main image
전체 (352)
Project (7)
TTF 강좌 (21)
Tip&Tech (56)
프로그래밍 (144)
DATABASE (7)
자료실 (103)
디아블로2 (2)
TTF 개인.. (11)
영어 관련 (0)
<<   2008/08   >>
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
2008/08
2008/07
2008/06
2008/05
2008/03
하루 바쁘냐..
    08/19 - indra
ㅎㅎ 서버 ..
    08/15 - TTF
TTF 바쁘냐?..
    08/15 - 하루
http://blog..
    08/08 - TTF
http://blog..
    08/07 - TTF
VC6에서 UNI..
    2006 - HaruSchool
ActiveX 상..
ADODB, OLED..
bootflashdo..
CD 없이 게..
CNX 17기 썽..
code2dive ..
CodeProject..
codeway - ..
cpueblo's b..
Crystal Flo..
C프로그래밍..
DB 디자인 ..
DirectX 9.0..
Dual - 네이..
Dual - 홈페..
DVD인포 국..
Encoding, D..
FastDelegate
guru 3d(최..
http 파일 ..
INF, WMI, V..
Inxzone - ..
MFC 관련 네..
MFC 기초 강..
MFC 유용한 ..
MFC 컨트롤 ..
MS 다운로드..
MSDN shell ..
MSDN 공용 ..
Mysql DB 디..
Naughter의 ..
POSA2 DEVPI..
SQL Compact
SVN NOTIFY
TCP 레지스..
Time4Crime(..
UML Case To..
UML 관련 정..
vc++ 소스와..
vivaman - ..
Win32 Debug..
winapi - AP..
xlsvba 카페
XType님의 ..
yoda의 홈페..
가상 플로피..
각종 언어 ..
고스트 만능..
구글번역(영..
구글번역(한..
국내 최대의..
김상욱 개발..
꿀뷰
네이버 지하..
대한민국 법..
디버거 툴 ..
디버그 랩
디스어셈블..
마소 TechNet
망사2 PC방 ..
메뉴얼 언패..
미디어 컨버트
바보주세 - ..
버그 리포트..
비스무리(송..
비주얼 베이..
서울시 버스..
서울시교통..
스프링노트
시디 커버 ..
시디알인포 ..
신용우님 FP..
신화방송국
싸미월드
알고리즘 심..
언패킹 강좌..
여리의 작업실
영어 듣기 ..
온라인 게임..
윈도우 프로..
유경상의 닷..
인크레디빌드
자바스크립..
전자 부품 ..
전화번호로 ..
정보보안연..
지니네 - 네..
지니야 홈페..
찬희와 희야

최흥배님 카..
카페 24 - ..
커플이님의 ..
클래스 뷰 ..
통계 정보 ..
통합전자민..
한국 TOC 컨..
한국어-로마..
한국전산원 ..
해외거주 한..
휘슬러 사용..
166
11
89056
태터툴즈 배너