Практическое руководство. Идентификация гиперссылок в строке HTML в Visual Basic
В этом примере показано простое регулярное выражение для идентификации гиперссылок в HTML-документе.
Пример
В этом примере используется регулярное выражение <A[^>]*?HREF\s*=\s*"([^"]+)"[^>]*?>([\s\S]*?)<\/A>, которое означает:
Строка " < A ", за которой следуют
Наименьший набор, состоящий из нуля или нескольких символов, в котором отсутствует знак " > ", за которым следуют
Строка " HREF ", за которой следуют
Нуль или более пробелов, за которыми следуют
Символ " = ", за которым следуют
Нуль или более пробелов, за которыми следуют
Кавычки-метка знака, за которым следуют
Набор знаков, не включающий кавычек-меток знака (записи), за которыми следуют
Кавычки-метка знака, за которым следуют
Наименьший набор, состоящий из нуля или нескольких символов, в котором отсутствует знак " > ", за которым следуют
Символ " = ", за которым следуют
Наименьший набор, состоящий нуля или более символов (записи), за которым следуют
Строка "</A>".
Объект Regex инициализируется с регулярным выражением и указывается без учета регистра.
Метод Regex объекта Matches возвращает объект MatchCollection, содержащий сведения обо всех составляющих входной строки, которые соответствуют регулярному выражению.
''' <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
В этом примере необходимо использовать инструкцию Imports для импорта пространства имен System.Text.RegularExpressions. Дополнительные сведения см. в разделе Оператор Imports (пространство имен .NET и тип).