我正试图抓住这个HTML页面代码中标记之前的Juwelier一词。
我对RegEx不太满意,特别是在多行使用它时。 那些不会动态的东西:
<p>Rubriek:
class="category"
<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>
答案 0 :(得分:0)
以下正则表达式是您可以使用的众多之一
它使用零宽度正面后视(?<=)
和前瞻(?=)
断言来定位目标字符串。
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+
用于匹配一个或多个单词字符,即a-zA-Z0-9_
\W*
用于匹配零个或多个非单词字符
[^>]
用于匹配非>
的字符。