使用C#正则表达式删除HTML标记

使用C#正则表达式删除HTML标记

如何使用C#正则表达式替换/删除所有HTML标记,包括尖括号?谁能帮我弄一下密码吗?



慕慕森
浏览 760回答 3
3回答

暮色呼如

如前所述,不应使用正则表达式处理XML或HTML文档。它们在HTML和XML文档中的性能不太好,因为无法以一般的方式表示嵌套结构。你可以用以下方法。String&nbsp;result&nbsp;=&nbsp;Regex.Replace(htmlDocument,&nbsp;@"<[^>]*>",&nbsp;String.Empty);这在大多数情况下都是可行的,但也会出现一些情况(例如,包含尖括号的CDATA),这些情况不能像预期的那样工作。

慕的地6264312

这个问题太宽泛了,无法确定地回答。你是说从一个真实的HTML文档中删除所有标签,就像网页一样?如果是这样,你必须:删除<!DOCTYPE声明或<?xml Prolog(如果它们存在)删除所有SGML注释删除整个Head元素删除所有脚本和样式元素Grabthar-知道用表单和表元素做什么吗?移除其余的标签从CDATA节中删除<![CDATA[和]>序列,但将其内容单独保留这只是我的头顶-我相信还有更多。一旦你完成了所有这些,你最终会得到一些地方的单词、句子和段落,而另一些地方则会出现大量无用的空格。但是,假设您只使用一个片段,并且只需删除所有标记即可,下面是我将使用的正则表达式:@"(?></?\w+)(?>(?:[^>'""]+|'[^']*'|""[^""]*"")*)>"在自己的选项中匹配单引号和双引号字符串足以解决属性值中的尖括号问题。我不认为有任何必要显式匹配标记中的属性名称和其他内容,就像Ryan的答案中的正则表达式那样;第一个选项处理了所有这些。如果你想知道这些(?>...)构造,它们是原子群..它们使正则表达式更高效,但更重要的是,它们防止了失控的回溯,这是您在混合交替和嵌套量词时应该注意的事情,就像我所做的那样。我不认为这会是一个问题,但我知道如果我不提,其他人会。;-)当然,这个正则表达式并不完美,但它可能是您所需要的最好的。
打开App,查看更多内容
随时随地看视频慕课网APP