剥去字符串中的html标签

时间:2013-07-15 23:25:07

标签: regex vb.net string replace

我正在编写一个程序假设从字符串中删除html标签。我一直在尝试替换所有以“<”开头的字符串并以“>”结尾。这(显然是因为我在这里问这个)到目前为止还没有奏效。这是我尝试过的:

StrippedContent = Regex.Replace(StrippedContent, "\<.*\>", "")

这只是返回原始字符串的随机部分。我也试过了

For Each StringMatch As Match In Regex.Matches(StrippedContent, "\<.*\>")
    StrippedContent = StrippedContent.Replace(StringMatch.Value, "")
Next

它做了同样的事情(返回看起来像原始字符串的随机部分)。有一个更好的方法吗?通过更好的我的意思是一种有效的方式。

3 个答案:

答案 0 :(得分:26)

描述

此表达式将:

  • 查找并替换所有标签
  • 避免有问题的边缘案例

正则表达式:<(?:[^>=]|='[^']*'|="[^"]*"|=[^'"][^\s>]*)*>

替换为:没有

enter image description here

实施例

示例文字

注意鼠标悬停功能

中的困难边缘情况

these are <a onmouseover=' href="NotYourHref" ; if (6/a>3) { funRotator(href) } ; ' href=abc.aspx?filter=3&prefix=&num=11&suffix=>the droids</a> you are looking for.

<强>代码

Imports System.Text.RegularExpressions
Module Module1
  Sub Main()
    Dim sourcestring as String = "replace with your source string"
    Dim replacementstring as String = ""
    Dim matchpattern as String = "<(?:[^>=]|='[^']*'|=""[^""]*""|=[^'""][^\s>]*)*>"
    Console.Writeline(regex.Replace(sourcestring,matchpattern,replacementstring,RegexOptions.IgnoreCase OR RegexOptions.IgnorePatternWhitespace OR RegexOptions.Multiline OR RegexOptions.Singleline))
  End Sub
End Module

替换后的字符串

these are the droids you are looking for.

答案 1 :(得分:4)

嗯,这证明你应该总是在谷歌搜索答案。这是我从http://www.dotnetperls.com/remove-html-tags-vbnet

获得的方法
Imports System.Text.RegularExpressions

Module Module1
    Sub Main()
        Dim html As String = "<p>There was a <b>.NET</b> programmer " +
          "and he stripped the <i>HTML</i> tags.</p>"
        Dim tagless As String = StripTags(html)
        Console.WriteLine(tagless)
    End Sub
    Function StripTags(ByVal html As String) As String
        Return Regex.Replace(html, "<.*?>", "")
    End Function
End Module

答案 2 :(得分:0)

这是一个使用Ro Yo Mi发布的正则表达式模式的简单函数。

<Extension()> Public Function RemoveHtmlTags(value As String) As String
    Return Regex.Replace(value, "<(?:[^>=]|='[^']*'|=""[^""]*""|=[^'""][^\s>]*)*>", "")
End Function

演示:

Dim html As String = "This <i>is</i> just a <b>demo</b>.".RemoveHtmlTags()
Console.WriteLine(html)