首页 新闻 搜索 专区 学院

C#中移除所有html标签的最高效的正则表达式

0
悬赏园豆:100 [待解决问题]

仅仅使用正则表达式 "<[^>]*>" 是不够的,对于<script>, <embed>, <object>, <iframe>这类标签,还要移除这标签中的内容,比如移除<script>要用这样的正则表达式:

"<script([^>])*>(\w|\W)*?</script([^>])*>"

如何用一个正则表达式高效地解决这个问题?

问题补充:

补充1:只要能解决这个问题,不用正则表达式也可以。

补充2:在PHP中,通过strip_tags()可以移除所有html标签。

dudu的主页 dudu | 高人七级 | 园豆:38814
提问于:2014-07-30 10:15
< >
分享
所有回答(9)
0

此页面按照"<[^>]*>"移除的后果是,留下:

C#中移除所有html标签的最高效的正则表达式_博问_博客园

当然还有一些空格。还有&nbsp;还有好多乱乱的文字。

 

感觉上,很不靠谱,如果要有可阅读性,可能要针对性的读取某个标签中的内容。

就是所谓的增加智能。

爱编程的大叔 | 园豆:30743 (高人七级) | 2014-07-30 10:29
0

这个用一个正则来做,不好吧.因为是指定的标签,所以肯定会有好几个|运算出来.就不高效啦

吴瑞祥 | 园豆:28851 (高人七级) | 2014-07-30 10:30
0

一个 正则不够的

男人要爽 | 园豆:15 (初学一级) | 2014-07-30 10:32
0

我从来都是用jQuery在浏览器端获得纯文本再传回服务器。$(selector).text()

Leo C.W | 园豆:155 (初学一级) | 2014-07-30 13:12
0

先找出<body>中的内容,在去掉<script>, <embed>, <object>, <iframe>,这样效率能提高一点

刘宏玺 | 园豆:14006 (专家六级) | 2014-08-01 14:46
0

HTML DOM节点处理呀。。。。HtmlAgilityPack这个玩意可以很好的剔除标签......

落幕残情 | 园豆:9 (初学一级) | 2014-08-02 14:22
0

这里有一个解决方案(不是我原创的),使用正则表达式:

http://www.cnblogs.com/qiantuwuliang/archive/2011/06/11/2078482.html

找到之后直接用 Match.Index 和 Match.Length 标记,删掉。

用 mshtml.HTMLDocument 可以解析,但是没法删除。

Grid Science | 园豆:202 (菜鸟二级) | 2014-08-02 22:57
0

<(.+?)>[\w\W]+?</\1>

乱7八糟 | 园豆:202 (菜鸟二级) | 2014-08-04 11:38
0

可以用HtmlAgilityPack 1.4.9:

1 string[] texts = htmlDoc.DocumentNode.SelectNodes(@"//text()[name(..)!='script' and name(..)!='embed' and name(..)!='object' and name(..)!='iframe']").Where(x => !Regex.IsMatch(x.InnerText, @"^\s+$")).Select(x => x.InnerText).ToArray();
2 string r = string.Join(" ", texts);

 

无机战士 | 园豆:321 (菜鸟二级) | 2016-03-09 00:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册