今天遇到了一个问题,先说一下现有系统发布的文章是一种直接将html排版都直接写入到数据库字段的方式入库的,估计是后台发布文章用到了像fckeditor这一类的插件,后台发布我倒是没有看,苦逼的问题出现了,就是设计师设计的效果图中要提取出文章中的一部分内容显示在网页上,在没有看到数据库中的记录时我还在想这个很简单吗,直接提取数据截取字符串就ok了,看到数据后我晕菜了,于是想到了既然你都排版好了,我该怎么办???用正则吧(c#中),写了一个正则匹配字符串,最初写了一个匹配(为了保险起见我将匹配网页开始和结束标签都单独写了一个正则,然后调试查看是否匹配)
第一次写的正则如下:
<\\w+> 和</\\w+> 发现可以过了我很是高兴的认为没问题了,但是网页上发现开始标签中也有可能存在样式和属性,例如:<div style='****'>
突然想起来原来网页上还有好多样式和属性相关的东西.....
于是乎写了第二个正则:
<\\w+.*> </\\w+>
满以为这次一定过,但是网页上竟然给我显示了@......@@@@@之类的字符,顿感哪里不对,shit,我突然间想多了
javascript 权威指南5中提到过关于贪婪匹配的问题,
于是乎写了第三个正则:
</\\w+> <\\w+?.*?>
这次总算搞定了,html标签的问题
后来发现在c#写了一大串Regex.Replace("串",正则,替换串)
开着也不舒服,这不是我风格,于是最后改成了这个样子
Regex.Replace(串, " |</\\w+>|<\\w+?.*?>|\\s", "");
这样子在我查看下所有的html的标签,包括数据库提取出来的串中包含的换行回车,和 ;都被替换了,哈哈要是有问题
及时提醒我一下啊!!!