У меня есть код регулярного выражения, который переносит данные между тегами заголовка на странице:
<%
Function UrlExists(sURL)
Dim objXMLHTTP
Dim thePage
Dim strPTitle
Dim blnReturnVal
Dim objRegExp
Dim strTitleResponse
'Create object
Set objXMLHTTP = CreateObject("MSXML2.ServerXMLHTTP")
on error resume next
'Get the head
objXMLHTTP.Open "HEAD", sURL, false
objXMLHTTP.setRequestHeader "User-Agent", Request.ServerVariables("HTTP_HOST")
objXMLHTTP.Send ""
'404?
If Err.Number <> 0 or objXMLHTTP.status <> 200 then blnReturnVal = "0|404 Error" Else blnReturnVal = "1|"
objXMLHTTP.close
'If not 404
if left(blnReturnVal,1) = "1" then
'Get the physical page
objXMLHTTP.Open "GET", sURL, false
objXMLHTTP.Send ""
thePage = objXMLHTTP.responseText
thePage = replace(thePage, vbCrlf, "")
objXMLHTTP.close
'Find title
Set objRegExp = New Regexp
objRegExp.IgnoreCase = true
objregexp.Multiline = true
objRegExp.Global = false
objRegExp.Pattern = "<title[^>]*?>(.*)</title>"
set strPTitle = objRegExp.Execute(thePage)
strTitleResponse = strPTitle.Item(0).Value
strTitleResponse = replace(strTitleResponse, vbCrlf, "")
strTitleResponse = trim(strTitleResponse)
if len(strTitleResponse) <1 OR strTitleResponse = "" then strTitleResponse = "(No Title)"
set objRegExp = nothing
strTitleResponse = replace(strTitleResponse,"</title>","")
strTitleResponse = replace(strTitleResponse,"<title>","")
strTitleResponse = replace(strTitleResponse,"'","' ")
blnReturnVal = blnReturnVal & strTitleResponse
end if
Set objXMLHTTP = nothing
UrlExists = blnReturnVal
End Function
%>
Это прекрасно работает и уже много месяцев, но когда я написал это (глупо?), Я сделал предположение, что на каждой странице будет только один или нет тегов заголовка. Недавно он начал выдавать странные ошибки на странице Джона Льюиса , потому что в HTML есть два заголовка:
<title>John Lewis - Shop online at Britain's Favourite Retailer</title>
... bunch of html
<title>
</title>
Как я могу изменить регулярное выражение, чтобы оно соответствовало только первой сопоставленной паре, не путаясь с приведенным выше HTML-кодом?