Procedura: identificare collegamenti ipertestuali in una stringa HTML di Visual Basic
Aggiornamento: novembre 2007
Nell'esempio riportato di seguito viene illustrata un'espressione regolare semplice per l'identificazione dei collegamenti ipertestuali in un documento HTML.
Esempio
Nell'esempio viene utilizzata l'espressione regolare <A[^>]*?HREF\s*=\s*"([^"]+)"[^>]*?>([\s\S]*?)<\/A>, ovvero:
La stringa "<A", seguita da
Il gruppo più piccolo di zero o più caratteri che non include il carattere ">", seguito da
La stringa "HREF", seguita da
Zero o più spazi, seguiti da
Il carattere "=", seguito da
Zero o più spazi, seguiti da
Il carattere di virgoletta, seguito da
Il gruppo di caratteri che non include il carattere di virgoletta (acquisito), seguito da
Il carattere di virgoletta, seguito da
Il gruppo più piccolo di zero o più caratteri che non include il carattere ">", seguito da
Il carattere ">", seguito da
Il gruppo più piccolo di zero o più caratteri (acquisito), seguito da
La stringa "</A>".
L'oggetto Regex viene inizializzato con l'espressione regolare e viene specificato senza distinzione tra maiuscole e minuscole.
Il metodo Matches dell'oggetto Regex restituisce un oggetto MatchCollection contenente informazioni relative a tutte le parti della stringa di input corrispondente all'espressione regolare.
''' <summary>Identifies hyperlinks in HTML text.</summary>
''' <param name="htmlText">HTML text to parse.</param>
''' <remarks>This method displays the label and destination for
''' each link in the input text.</remarks>
Sub IdentifyLinks(ByVal htmlText As String)
Dim hrefRegex As New Regex( _
"<A[^>]*?HREF\s*=\s*""([^""]+)""[^>]*?>([\s\S]*?)<\/A>", _
RegexOptions.IgnoreCase)
Dim output As String = ""
For Each m As Match In hrefRegex.Matches(htmlText)
output &= "Link label: " & m.Groups(2).Value & vbCrLf
output &= "Link destination: " & m.Groups(1).Value & vbCrLf
Next
MsgBox(output)
End Sub
Per questo esempio è necessaria l'istruzione Imports per importare lo spazio dei nomi di System.Text.RegularExpressions. Per ulteriori informazioni, vedere Istruzione Imports (tipo e spazio dei nomi .NET).