정규식을 설명하기 위해서 한가지 예를 들기로 한다.(http://www.npteam.net)
^ht{2}p:(/{2})w{3}(.)(n.{0,10})(?:com|net|(co.kr))
- 문장의 처음은 h로 시작한다.
- "t"글자가 연속 2번 출력된다.
- "p:" 가 출력된다.
- "/"가 연속 2번 출력된다.
- "w"가 연속 3번 출력된다.
- 아무글자 1글자를 그대로 출력한다.
- n으로 시작해서 최소 0에서 최대 10글자까지 아무글자나 출력한다.
- 맨 뒤에 종결 문자는 "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
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
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])$
- 첫번째 자리의 숫자 (0, 1), 두번째 자리 숫자(0~9), 세번째 자리 숫자(0~9)
- 첫번째 자리의 숫자(2), 두번째 자리 숫자(0~4), 세번째 자리 숫자(0~9)
- 첫번째 자리의 숫자(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 마찬가지,,ㅡㅡㅋ
Rosso 2008/08/21 22:30 고유주소 고치기 답하기
바쁜가 보군 ttf형
TTF 2008/08/24 13:24 고유주소 고치기 답하기
요즘 개인적으로 힘든일만 계속 겹치고 있어서 개인 시간이 없어요. 마치 고등학교 3학년으로 되돌아간 느낌.
새벽 4시에 자고 9시에 출근하고...
뭔가 이건 아닌데, 내 인생은 왜 이러지 하면서도 열심히 살려는 마음으로 포기하지 않고 최선을 다하고 있어요.
푸른~~~ 2008/08/26 13:25 고유주소 고치기 답하기
흠 여기에 댓글진행중...
겁나게 바쁘게 사는가보군..
나는 2단계 공항 오픈하고 교대근무시작해서 요즘 시간이 조금 남는 분위기 인데...
TTF 2008/08/30 09:44 고유주소 고치기 답하기
http://www.codeproject.com/KB/tips/Regular_Expressions.aspx
TTF 2008/12/15 18:05 고유주소 고치기 답하기
http://msdn.microsoft.com/ko-kr/library/2k3te2cs(VS.80).aspx