【随手写程序】苦逼啊,正则表达式中的贪婪匹配真是误我时间啊

本文介绍了使用C#中的正则表达式来处理HTML文本的方法,解决了从文章中提取部分内容并去除HTML标签的需求。

今天遇到了一个问题,先说一下现有系统发布的文章是一种直接将html排版都直接写入到数据库字段的方式入库的,估计是后台发布文章用到了像fckeditor这一类的插件,后台发布我倒是没有看,苦逼的问题出现了,就是设计师设计的效果图中要提取出文章中的一部分内容显示在网页上,在没有看到数据库中的记录时我还在想这个很简单吗,直接提取数据截取字符串就ok了,看到数据后我晕菜了,于是想到了既然你都排版好了,我该怎么办???用正则吧(c#中),写了一个正则匹配字符串,最初写了一个匹配(为了保险起见我将匹配网页开始和结束标签都单独写了一个正则,然后调试查看是否匹配)

第一次写的正则如下:
<\\w+> 和</\\w+> 发现可以过了我很是高兴的认为没问题了,但是网页上发现开始标签中也有可能存在样式和属性,例如:<div style='****'>
突然想起来原来网页上还有好多样式和属性相关的东西.....


于是乎写了第二个正则:
<\\w+.*> </\\w+>
满以为这次一定过,但是网页上竟然给我显示了@......@@@@@之类的字符,顿感哪里不对,shit,我突然间想多了
javascript 权威指南5中提到过关于贪婪匹配的问题,


于是乎写了第三个正则:
</\\w+> <\\w+?.*?>
这次总算搞定了,html标签的问题
后来发现在c#写了一大串Regex.Replace("串",正则,替换串)
开着也不舒服,这不是我风格,于是最后改成了这个样子
Regex.Replace(串, "&nbsp;|</\\w+>|<\\w+?.*?>|\\s", "");

这样子在我查看下所有的html的标签,包括数据库提取出来的串中包含的换行回车,和&nbsp;都被替换了,哈哈要是有问题
及时提醒我一下啊!!!

转载于:https://www.cnblogs.com/God-Shell/archive/2011/12/16/regularbygod_shell.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值