vbscript正则表达式转入数组

发布于 2024-11-06 07:32:14 字数 554 浏览 0 评论 0原文

通过下面的代码,我尝试将使用正则表达式提取的每个 url 提取到一个数组中,稍后我可以调用该数组以及 url 计数。不知道如何抓住所有这些。

Set objxmlHTTP = CreateObject("Microsoft.XMLHTTP")
Call objxmlHTTP.open("GET", "website", False)
objxmlHTTP.Send()

strHTML = objxmlHTTP.ResponseText

Dim objRegExp
Set objRegExp = New RegExp

objRegExp.IgnoreCase = True
objRegExp.Global = True
objRegExp.Pattern = "<a\s+href=""(http://.*?)""[^>]+>(\s*\n|.+?\s*)</a>"

Dim objMatch
For Each objMatch in objRegExp.Execute(strHTML)
  objMatch.SubMatches(0)
Next

Set objxmlHTTP = Nothing

With the code below I am trying to pull each url I extract using the regular expression into an array that I can call later along with the count of urls. Not sure how to grab all of them.

Set objxmlHTTP = CreateObject("Microsoft.XMLHTTP")
Call objxmlHTTP.open("GET", "website", False)
objxmlHTTP.Send()

strHTML = objxmlHTTP.ResponseText

Dim objRegExp
Set objRegExp = New RegExp

objRegExp.IgnoreCase = True
objRegExp.Global = True
objRegExp.Pattern = "<a\s+href=""(http://.*?)""[^>]+>(\s*\n|.+?\s*)</a>"

Dim objMatch
For Each objMatch in objRegExp.Execute(strHTML)
  objMatch.SubMatches(0)
Next

Set objxmlHTTP = Nothing

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

陈独秀 2024-11-13 07:32:14

我用一个假字符串测试了这个,你的正则表达式结果看起来有点奇怪,所以我改变了它(摘自 此处)。第一场比赛的结果(您捕获了 2 场比赛?)被放置在 matches 数组中:

Dim objRegExp
Set objRegExp = New RegExp

objRegExp.IgnoreCase = True
objRegExp.Global = True
objRegExp.Pattern = ""((https?:\/\/|www.)([-\w.]+)+(:\d+)?(\/([\w\/_.]*(\?\S+)?)?)?)""

dim matches()
dim i: i = 0

Dim objMatch
For Each objMatch in objRegExp.Execute(strHTML)
   redim preserve matches(i)
   matches(i) = objMatch.SubMatches(0)
   i = (i + 1)
Next

Set objxmlHTTP = Nothing

'//read back
for i = 0 to ubound(matches)
   wscript.echo matches(i)
next

I tested this with a fake string, your regexp results seemed a bit wonky so I changed it (grabbed from here). Results of the 1st match (you capture 2?) are placed in the matches array:

Dim objRegExp
Set objRegExp = New RegExp

objRegExp.IgnoreCase = True
objRegExp.Global = True
objRegExp.Pattern = ""((https?:\/\/|www.)([-\w.]+)+(:\d+)?(\/([\w\/_.]*(\?\S+)?)?)?)""

dim matches()
dim i: i = 0

Dim objMatch
For Each objMatch in objRegExp.Execute(strHTML)
   redim preserve matches(i)
   matches(i) = objMatch.SubMatches(0)
   i = (i + 1)
Next

Set objxmlHTTP = Nothing

'//read back
for i = 0 to ubound(matches)
   wscript.echo matches(i)
next
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文