【发布时间】:2013-12-17 11:31:06
【问题描述】:
我需要声明一个字符串以用作正则表达式模式。
字符串是: (?
通常要在 VBA 中声明一个用于 Reg Exp 的字符串,请用双引号括起来,因此它看起来像这样: "(?
这个: "(?
这个 "(?
有效,但是当我使用 Msgbox 查看模式时,它看起来像这样:
(?
因此在 RegEx 中无法正常工作。
啊!
这是我用于测试的代码:
Sub tester()
Dim PATH_TO_FILINGS As String
'PATH_TO_FILINGS = "www.sec.gov/Archives/edgar/data/1084869/000110465913082760"
PATH_TO_FILINGS = "www.sec.gov/Archives/edgar/data/1446896/000144689612000023"
MsgBox GetInstanceDocumentPath(PATH_TO_FILINGS)
End Sub
Function GetInstanceDocumentPath(PATH_TO_FILINGS As String)
'this part launches IE and goes to the correct directory
If IEbrowser Is Nothing Then
Set IEbrowser = CreateObject("InternetExplorer.application")
IEbrowser.Visible = False
End If
IEbrowser.Navigate URL:=PATH_TO_FILINGS
While IEbrowser.Busy Or IEbrowser.readyState <> 4: DoEvents: Wend
'this part starts the regular expression engine and searches for the reg exp pattern (i.e. the file name)
Dim RE As Object
Set RE = CreateObject("vbscript.regexp")
RE.Pattern = "(?<="[a-zA-Z0-9.-]*\d{8}.xml(?=")" '"\w+(?=-)(-)\d{8}(.xml)"
MsgBox RE.Pattern
RE.IgnoreCase = True
Dim INSTANCEDOCUMENT As Object
Set INSTANCEDOCUMENT = RE.Execute(IEbrowser.Document.body.innerhtml)
If INSTANCEDOCUMENT.Count = 1 Then
GetInstanceDocumentPath = PATH_TO_FILINGS & "/" & INSTANCEDOCUMENT.Item(0)
End If
End Function
感谢您对如何解决此问题的任何想法。
【问题讨论】: