VB6.0 에서 winhttp 통신 이후 파싱을 하다보면 html 태그 및 줄바꿈 등으로인해 파싱이 불편한 경우가 있는데요
그런 경우를 위해 아래의 함수들을 이용하여 정규식 및 replace 등을 이용하여 파싱을 한다면 한결 더 쉬워집니다!
함수들의 기능을 한가지 한가지 설명해 드리도록 하겠습니다.

□. 줄바꿈 라인을 모두 제거하는 함수
===============================================================
Function RemoveLines(myString As String)
    myString = Replace(myString, vbTab, vbnullstring)   ' tab 문자열을 제거
    myString = Replace(myString, Chr(13), vbnullstring)
    myString = Replace(myString, Chr(10), vbnullstring)
    myString = Replace(myString, vbCrLf, vbnullstring)
    myString = Replace(myString, vbNewLine, vbnullstring)
    RemoveLines = myString
End Function

ex)
Dim as Parsing string '변수선언
Parsing = "안녕하세요(tab)문자열을(줄바꿈)파싱할때 저를 이용하세요"

' 실제 문자열은 대략 아래와 같은 형태가 되겠죠.
'안녕하세요 문자열을
'파싱할때 저를 이용하세요

Parsing = RemoveLines(Parsing) '제거

'결과 : 안녕하세요문자열을파싱할때 저를 이용하세요
===============================================================
 
□. 정규식 패턴에 매칭되는 문자열을 찾는 함수 
===============================================================
Function RegExFind(myString As String, FindWhat As String)
On Error Resume Next
 
   '오브젝트 생성
   Dim objRegExp As RegExp
   Dim objMatch As Match
   Dim colMatches   As MatchCollection
   Dim RetStr As String
 
   Set objRegExp = New RegExp
   objRegExp.Pattern = FindWhat
   objRegExp.IgnoreCase = True
   objRegExp.Global = True
   objRegExp.MultiLine = True
   If (objRegExp.Test(myString) = True) Then
    Set colMatches = objRegExp.Execute(myString)
    For Each objMatch In colMatches
      RetStr = objMatch.Value
    Next
   Else
    RetStr = "" '매칭 되는것이 없을때는 공백 반환
   End If
   RegExFind = RetStr
End Function

ex)
Dim as Parsing string 
'변수선언
Parsing = "123정규식을 이용한 파싱입니다.456"

Parsing = 
RegExFind(Parsing, "[0-9]") '숫자를 필터링하는 정규식에 매칭되는 문자열 담기

'결과 : 123456
 ===============================================================

 □. 정규식 패턴에 매칭되는 문자열을 찾아서 원하는 문자열로 replace 해주는 함수 
===============================================================

Function RegExReplace(myString As String, FindThis As String, ReplaceWithThis As String)
On Error Resume Next
    'search string for item and then replace with new item:
    Dim sourse1 As String, resourse As Object
    sourse1 = myString
    Set resourse = New RegExp
    resourse.Pattern = FindThis
    resourse.Global = True
    resourse.IgnoreCase = True
    If resourse.Test(sourse1) = True Then
        myString = resourse.Replace(sourse1, ReplaceWithThis)
    End If
    RegExReplace = myString
End Function

ex)
Dim as Parsing string 
'변수선언
Parsing = "<b>정규식</b>을 이용한 <a href="#">html 태그를 제거하는 파싱</a>입니다."

Parsing = 
RegExReplace(Parsing, "<[^>]*>", vbnullstring) 'html 태그를 필터링하는 정규식에 매칭되는 문자열 담기

'결과 : 정규식을 이용한 html 태그를 제거하는 파싱 입니다.

 ===============================================================

 □. html 태그를 모두 제거해주는 함수
===============================================================
Function RemoveHTML(strText As String)
    Dim RegEx
    Set RegEx = New RegExp
    RegEx.Pattern = "<[^>]*>"
    RegEx.Global = True
    RegEx.IgnoreCase = True
    strText = Replace(strText, "&nbsp;", vbnullstring)
    RemoveHTML = RegEx.Replace(strText, vbnullstring)
End Function

ex)
Dim as Parsing string 
'변수선언
Parsing = "<html><head><title>Hello World</title></head><body>html 태그 제거 파싱</body></html>"

Parsing = 
RegExHTML(Parsing) 'html 태그를 정규식을 토해 모두 제거

'결과 : Hello Worldhtml 태그 제거 파싱
===============================================================

위에서 설명드린 각종 파싱에 유용한 함수들을
용도에 맞게 적절히 사용하여 코딩하시면 보다 손쉽게 파싱을 하실수 있습니다.

+ Recent posts