方法 : Visual Basic の HTML 文字列に含まれているハイパーリンクを識別する
更新 : 2007 年 11 月
次の例は、HTML ドキュメント内のハイパーリンクを識別するための簡単な正規表現を示しています。
使用例
この例では、正規表現 <A[^>]*?HREF\s*=\s*"([^"]+)"[^>]*?>([\s\S]*?)<\/A> を使用しています。この正規表現の意味は、以下のとおりです。
文字列 "<A" が先頭にある。
その後に、">" 以外の文字が 0 個以上連続する。
その後に、文字列 "HREF" がある。
その後に、空白文字が 0 個以上ある。
その後に、文字列 "=" がある。
その後に、空白文字が 0 個以上ある。
その後に、引用符がある。
その後に、(キャプチャされた) 引用符以外の文字が連続する。
その後に、引用符がある。
その後に、">" 以外の文字が 0 個以上連続する。
その後に、文字列 ">" がある。
その後に、(キャプチャされた) 文字が 0 個以上ある。
最後に文字列 "</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 名前空間および型)」を参照してください。