方法 : Visual Basic の HTML 文字列に含まれているハイパーリンクを識別する

更新 : 2007 年 11 月

次の例は、HTML ドキュメント内のハイパーリンクを識別するための簡単な正規表現を示しています。

使用例

この例では、正規表現 <A[^>]*?HREF\s*=\s*"([^"]+)"[^>]*?>([\s\S]*?)<\/A> を使用しています。この正規表現の意味は、以下のとおりです。

  1. 文字列 "<A" が先頭にある。

  2. その後に、">" 以外の文字が 0 個以上連続する。

  3. その後に、文字列 "HREF" がある。

  4. その後に、空白文字が 0 個以上ある。

  5. その後に、文字列 "=" がある。

  6. その後に、空白文字が 0 個以上ある。

  7. その後に、引用符がある。

  8. その後に、(キャプチャされた) 引用符以外の文字が連続する。

  9. その後に、引用符がある。

  10. その後に、">" 以外の文字が 0 個以上連続する。

  11. その後に、文字列 ">" がある。

  12. その後に、(キャプチャされた) 文字が 0 個以上ある。

  13. 最後に文字列 "</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 名前空間および型)」を参照してください。

参照

概念

例 : HREFS のスキャン

その他の技術情報

Visual Basic における文字列の解析