웹 검색의 HTML 콘텐츠에 할당 된 문자열에 대해 정규 표현식 검색을 시도하고 있습니다. 일치시키려는 패턴은 다음 형식을 사용합니다 HQ 12345
두 번째 조각도 문자로 시작할 수 있으므로 HQ A12345
가능성이 있습니다. 아래 코드에서 볼 수 있듯이 내가 사용하는 정규식 패턴은 "HQ .*[0-9]"
입니다.정규 표현식 패턴 HTML 내용 일치
문제는 정규식 검색을 실행할 때 일치하는 패턴이 HQ 959693
이 아니라 아래 메시지 상자의 스냅 샷에 표시된 나머지 HTML 파일 내용도 포함한다는 것입니다.
Sub Test()
Dim mystring As String
mystring = getHTMLData("loratadine")
Dim rx As New RegExp
rx.IgnoreCase = True
rx.MultiLine = False
rx.Global = True
rx.Pattern = "HQ .*[0-9]"
Dim mtch As Variant
For Each mtch In rx.Execute(mystring)
Debug.Print mtch
MsgBox(mtch)
Next
End Sub
Public Function getHTMLData (ByVal name As String) As String
Dim XMLhttp: Set XMLhttp = CreateObject("MSXML2.ServerXMLHTTP")
XMLhttp.setTimeouts 2000, 2000, 2000, 2000
XMLhttp.Open "GET", "http://rulings.cbp.gov/results.asp?qu=" & name & "&p=1", False
XMLhttp.send
If XMLhttp.Status = 200 Then
getHTMLData = XMLhttp.responsetext
Else
getHTMLData = ""
End If
End Function
저는 VBA에 익숙하지 않지만 C++에서 같은 문제가있었습니다. 정규 표현식 엔진이 정규 표현식 (!)이 포함 된 문자열을 반환하기 때문에 메시지 상자의 문자열이 맞다고 생각합니다. C++에서는 정규식과 정확하게 일치하는 경우에만 (!) 문자열을 반환하도록 엔진에 지시해야했습니다. C++에서 대부분의 엔진은 이것을 수행하기 위해 "exactMatch()"속성이나 함수를 제공합니다. 어쩌면 당신의 VBA 엔진은 비슷한 기능을 제공합니까? – MichaelXanadu