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, " ", 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 태그 제거 파싱
===============================================================
위에서 설명드린 각종 파싱에 유용한 함수들을
용도에 맞게 적절히 사용하여 코딩하시면 보다 손쉽게 파싱을 하실수 있습니다.
'[VB6] 프로그래밍' 카테고리의 다른 글
[VB6.0] WinHTTP 타임아웃,오류 처리 예제 (0) | 2020.03.28 |
---|---|
[VB6.0] 웹브라우저 인터넷 컨트롤러 (WebBrowser) IE 버전 호환성 (0) | 2020.03.28 |
[VB6.0] 레지스트리 등록/삭제 (0) | 2020.03.28 |
[VB6.0] sleep을 대체 할수 있는 비동기식 딜레이 (0) | 2020.03.28 |
[VB6.0] Selenium 사용시 상단에 테스트 메세지 없애기 (0) | 2020.03.27 |