VBScript регулярное выражение в массив - PullRequest
1 голос
/ 11 мая 2011

С помощью приведенного ниже кода я пытаюсь вытащить каждый 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

1 Ответ

1 голос
/ 11 мая 2011

Я протестировал это с фальшивой строкой, ваши результаты регулярных выражений показались немного странными, поэтому я изменил их (взято из здесь ).Результаты 1-го матча (вы захватили 2?) Помещаются в массив матчей:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...