使用 vb.net 从字符串中删除所有 div 元素

Remove all div elements from string using vb.net

我想从我的字符串中删除所有元素,包括具有 class 等属性的元素。 我已经在这里检查过了,所以正则表达式显然不是答案:RegEx match open tags except XHTML self-contained tags

我目前已经有一些正则表达式可以替换字符串中的所有标签(请注意,如果重要的话,我永远不会解析完整的 HTML 文档)并保留内容:Regex.Replace(s, "<[^>]*(>|$)", String.Empty)。但是,我只想删除 div 标签并保留内容。

所以我有:

<div class=""fade-content""><div><span>some  content</span></div></div>
<div>some  content</div> 

期望的输出:

<span>some  content</span>
some  content

我一直在使用正则表达式路径,并尝试类似:<div>.*<\/div>,但不包括具有属性的 div。

如何使用 VB.NET 仅删除 div 个元素?

有几种方法可以做到这一点。一个,简短而简单,是以下一个:

Regex.Replace(s, "</?div.*?>", String.Empty)

这是一个例子:

    's simulates your html file
    Dim s As String = "<div class="""" fade-content""""><div><span>some  content</span></div></div>" + Environment.NewLine + "<div>some  content</div>"

    'let's store the result in s1
    Dim s1 As String = Text.RegularExpressions.Regex.Replace(s, "</?div.*?>", String.Empty)

    'output
    MessageBox.Show(s1)

输出:

这可以通过使用 WebBrowser 控件在没有正则表达式的情况下实现。请尝试以下操作:

提取所需数据:

Private Function ExtractDesiredData(html As String) As List(Of String)
    Dim result As List(Of String) = New List(Of String)()

    'create new instance
    Using wb As WebBrowser = New WebBrowser()
        wb.Navigate(New Uri("about:blank"))

        'create reference
        Dim doc As HtmlDocument = wb.Document

        'add html to document
        doc.Write(html)

        'loop through body elements
        For Each elem As HtmlElement In doc.Body.All
            If elem.TagName = "DIV" AndAlso Not elem.InnerHtml.Contains("DIV") Then
                Debug.WriteLine($"DIV elem InnerHtml: '{elem.InnerHtml}'")

                'add
                result.Add(elem.InnerHtml)
            End If
        Next
    End Using

    Return result
End Function

用法:

Dim html As String = "<div class=""fade-content""><div><span>some  content</span></div></div>"
html &= vbCrLf & "<div>some  content</div>"

Dim desiredData As List(Of String) = ExtractDesiredData(html)

资源:

  • how to make a webbrowser control go blank in c#?