此页面按照"<[^>]*>"移除的后果是,留下:
C#中移除所有html标签的最高效的正则表达式_博问_博客园
当然还有一些空格。还有 还有好多乱乱的文字。
感觉上,很不靠谱,如果要有可阅读性,可能要针对性的读取某个标签中的内容。
就是所谓的增加智能。
这个用一个正则来做,不好吧.因为是指定的标签,所以肯定会有好几个|运算出来.就不高效啦
一个 正则不够的
我从来都是用jQuery在浏览器端获得纯文本再传回服务器。$(selector).text()
先找出<body>中的内容,在去掉<script>, <embed>, <object>, <iframe>,这样效率能提高一点
HTML DOM节点处理呀。。。。HtmlAgilityPack这个玩意可以很好的剔除标签......
这里有一个解决方案(不是我原创的),使用正则表达式:
http://www.cnblogs.com/qiantuwuliang/archive/2011/06/11/2078482.html
找到之后直接用 Match.Index 和 Match.Length 标记,删掉。
用 mshtml.HTMLDocument 可以解析,但是没法删除。
<(.+?)>[\w\W]+?</\1>
可以用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);