我使用vba结合IE编写了一个脚本来解析应用程序网页中的联系信息regex在上面。我进行了很多搜索,但找不到任何可以满足我的要求的示例。这pattern
可能并不理想地找到phone
号,但这里主要关心的是我如何使用pattern
在 vba IE 中。
再次:我的目的是解析电话号码661-421-5861
从该网页申请regex
在 vba IE 中。
这是我到目前为止所尝试过的:
Sub FetchItems()
Const URL$ = "https://www.nafe.com/bakersfield-nafe-network"
Dim IE As New InternetExplorer, HTML As HTMLDocument
Dim rxp As New RegExp, email As Object, Row&
With IE
.Visible = True
.navigate URL
While .Busy = True Or .readyState < 4: DoEvents: Wend
Set HTML = .document
End With
With rxp
.Pattern = "(?<=Phone:)\s*?.*?([^\s]+)"
Set email = .Execute(HTML.body.innerText) 'I'm getting here an error
If email.Count > 0 Then
Row = Row + 1: Cells(Row, 1) = email.Item(0)
End If
End With
IE.Quit
End Sub
当我执行上面的脚本时遇到错误对象“IRegExp2”的方法“执行”失败当它到达包含的行时Set email = .Execute(HTML.body.innerText)
。我怎样才能让它成功?
请注意,VBA 正则表达式不支持lookbehind。在这里,您可能想要捕获任何数字,后跟任意数量的数字和连字符Phone:
.
您需要将模式重新定义为
rxp.Pattern = "Phone:\s*(\d[-\d]+)"
然后,您需要获取第一场比赛并访问其.SubMatches(0)
:
Set email = .Execute(HTML.body.innerText)
If email.Count > 0 Then
Cells(Row+1, 1) = email.Item(0).SubMatches(0)
End If
See the 正则表达式在行动 https://regex101.com/r/YEmqbv/2。被刺的绿色突出部分是什么.SubMatches(0)
holds.
图案细节
-
Phone:
- 文字子串
-
\s*
- 0+ 空格
-
(\d[-\d]+)
- 捕获组 1:一个数字,后跟 1+(由于+
,你可以替换为*
匹配零个或多个)数字或/和连字符。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)