1

この HTML ページ コードからタグの前にある Juwelier という単語を取得しようとしています。

私は RegEx が苦手で、特に複数の行で使用するのは得意ではありません。動的にならないもの:

  • <p>Rubriek:
  • class="category"
  • そしてもちろん、次のようなhtmlタグ<p> , </p> , <a> , </a>

これは HTML ページのコードです

    <p>Rubriek: 

      <a href="http://www.detelefoongids.nl/juwelier/4-1/?oWhat=Juwelier"
         title="Juwelier"
         class="category">
           Juwelier
      </a>
   </p>
4

1 に答える 1

0

以下の正規表現は、使用できる多くの正規表現の1つです。
ゼロ幅の正の後読みアサーションと(?<=)先読み(?=)アサーションを使用して、ターゲット文字列を検索します。

Dim str As String = _
"<p>Rubriek:" & vbCrLf &
"  <a href=""http://www.detelefoongids.nl/juwelier/4-1/?oWhat=Juwelier""" & vbCrLf &
"     title = ""Juwelier""" & vbCrLf &
"     class=""category"">" & vbCrLf &
"       Juwelier" & vbCrLf &
"  </a>" & vbCrLf &
"</p>"

Dim match As Match = Regex.Match(str, _
    "(?<=<p>Rubriek:[^>]+?class=""category"">\W*)\w+(?=\W*</a>)")

If (match.Success) Then
    MsgBox(match.Value)
End If

上記では使用されていませんが、複数行を照合する場合に覚えておくべき重要なことは、ワイルドカードメタ文字を使用する場合は単一行モードを使用して、新しい行を含む.すべての文字と照合することです。これは、正規表現の先頭に配置するか、を使用して指定できます。RegexOptions.Singleline(?s)

\w+1つ以上の単語文字a-zA-Z0-9_
\W*を照合するために使用されます。つまり、0個以上の非単語文字を照合するために使用されます。
[^>]ではない文字を照合するために使用され>ます。

于 2013-01-22T23:45:10.547 に答える