정규식을 설명하기 위해서 한가지 예를 들기로 한다.(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
■ 정규식에 의해서 일치하는 문장을 리턴받고 싶을 경우
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])$ - 첫번째 자리의 숫자 (0, 1), 두번째 자리 숫자(0~9), 세번째 자리 숫자(0~9)
- 첫번째 자리의 숫자(2), 두번째 자리 숫자(0~4), 세번째 자리 숫자(0~9)
- 첫번째 자리의 숫자(2), 두번째 자리의 숫자(5), 세번째 자리의 숫자(0~5)
결국 각각 다음과 같은 범위를 제한하고 있다. 000 ~ 199, 200 ~ 249, 250 ~ 255 왜 이렇게 3단계로 분류해야 할까?
정규식은 숫자를 정수로 판단하는 것이 아니라 각각 하나의 문자로 판단하기 때문이다.
따라서 문자가 올 수 있는 범위를 세부적으로 제한함으로써 위와 같은 결과를 얻을 수 있다.
이외에도 정규식을 활용하면 수 많은 표현을 아주 간결하게 찾아낼 수 있다.
|