我正在编写一个程序假设从字符串中删除html标签。我一直在尝试替换所有以“<”开头的字符串并以“>”结尾。这(显然是因为我在这里问这个)到目前为止还没有奏效。这是我尝试过的:
StrippedContent = Regex.Replace(StrippedContent, "\<.*\>", "")
这只是返回原始字符串的随机部分。我也试过了
For Each StringMatch As Match In Regex.Matches(StrippedContent, "\<.*\>")
StrippedContent = StrippedContent.Replace(StringMatch.Value, "")
Next
它做了同样的事情(返回看起来像原始字符串的随机部分)。有一个更好的方法吗?通过更好的我的意思是一种有效的方式。
答案 0 :(得分:26)
此表达式将:
正则表达式:<(?:[^>=]|='[^']*'|="[^"]*"|=[^'"][^\s>]*)*>
替换为:没有
示例文字
注意鼠标悬停功能
中的困难边缘情况 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)