如何用正则过滤指定的html的代码?
比如以下代码
<A onfocusfocus=this.blur() href='http://...../4_394.jpg' target=_blank><IMG alt='' src='http://......./4_394.jpg' border=0 ='javascript:if(this.width>screen.width-333)this.width=screen.width-333' dypop='按此在新窗口浏览图片'>
如何利用正则过滤成只有基本html代码的<img src='http://......./4_394.jpg' border=0>
请知道的朋友提供参考代码或者正则的电子书可下载地址
感谢回贴的朋友!
问题点数:80、回复次数:20Top
1 楼xzq686(★_瞬_★)回复于 2004-12-02 15:53:25 得分 0
到GOOGLE上一找就一大堆。。
http://blog.csdn.net/laily/archive/2004/06/24/25872.aspxTop
2 楼landlordh(work wonders)回复于 2004-12-02 15:56:51 得分 2
试下这个
<IMG.*>Top
3 楼wangxt(海贝)回复于 2004-12-02 16:02:58 得分 0
帮你顶Top
4 楼xzq686(★_瞬_★)回复于 2004-12-02 16:16:30 得分 5
"<img src=([^<])*>"Top
5 楼longsky(长空)回复于 2004-12-02 19:22:38 得分 0
能不能给出一个具体化如何转换的语句呢?Top
6 楼xiaoslong(龙哥)回复于 2004-12-02 19:38:08 得分 0
帮你顶Top
7 楼longsky(长空)回复于 2004-12-02 22:02:44 得分 0
landlordh(software) 和 xzq686(瞬) 两位兄弟的方法不行啊,没有完成这个转换。Top
8 楼wzt226(猪想吃草!)回复于 2004-12-02 22:44:36 得分 0
接分Top
9 楼xianle_xianle(仙乐)回复于 2004-12-02 22:45:22 得分 0
没太看懂。Top
10 楼longsky(长空)回复于 2004-12-02 22:54:11 得分 0
问题就是这样的:
把img 图像链接中 带有onclick等javascript事件之类的杂项去掉,只留下最基本的属性。
如这一段:
<IMG alt='' src='http://......./4_394.jpg' border=0 onclick='javascript:if(this.width>screen.width-333)this.width=screen.width-333' dypop='按此在新窗口浏览图片'>
经过正则表达式过滤过后,应变成<IMG alt='' src='http://......./4_394.jpg' border=0>
现在就是求这个 正则表达式如何写Top
11 楼iamknight(侠客)回复于 2004-12-02 23:20:32 得分 2
"<img [^<]*>"
Top
12 楼abm1971(四环素)回复于 2004-12-02 23:36:18 得分 1
http://\S+.\S+ 出自ASP.net揭秘Top
13 楼longsky(长空)回复于 2004-12-02 23:56:59 得分 0
imgstring="img src=\"http://bbs.youhow.net/non-cgi/usr/4/4_394.jpg\" onclick=\"javascript:if(this.width>screen.width-333)this.width=screen.width-333\" border=0 dypop=\"按此在新窗口浏览图片\">";
imgstring=System.Text.RegularExpressions.Regex.Replace(imgstring,@"<img [^<]*>","");
是这样吗?
imgstring="<img src=\"http://bbs.youhow.net/non-cgi/usr/4/4_394.jpg\" border=0>
得不到这样的值啊
Top
14 楼saucer(思归)回复于 2004-12-03 02:16:28 得分 70
try something like
string s = "<IMG alt='' src='http://......./4_394.jpg' border=0 onclick='javascript:if(this.width>screen.width-333)this.width=screen.width-333' dypop='按此在新窗口浏览图片'>";
s = Regex.Replace(s,@"<IMG\s+(((?<alt>alt=\S+)|(?<src>src=\S+)|(?<border>border=\S+)|\S*)\s*)*[^>]*>", "<IMG ${alt} ${src} ${border}>", RegexOptions.IgnoreCase);
or
s = Regex.Replace(s,@"<IMG\s+(((?<alt>alt=('[^']*'|""[^""]*""|\S*))|(?<src>src=('[^']*'|""[^""]*""|\S*))|(?<border>border=('[^']*'|""[^""]*""|\S*))|\S*)\s*)*[^>]*>", "<IMG ${alt} ${src} ${border}>", RegexOptions.IgnoreCase);
Console.WriteLine(s);Top
15 楼mobydick(敌伯威|我排著队拿著爱的号码牌)回复于 2004-12-03 08:56:00 得分 0
老大,你的正则式太复杂了,估计他看不懂。呵呵。Top
16 楼longsky(长空)回复于 2004-12-03 09:30:04 得分 0
我确实看不懂。
思归老大:感谢你的帮助!不过刚才测试了一下,你的方法能让单个的<img >很完美的过滤掉其它杂项,可是只能过滤第一个啊,假如还有第二个<img .....>之类的,就会把后边的都给去掉了,要怎么改一下啊?Top
17 楼saucer(思归)回复于 2004-12-03 10:06:33 得分 0
string s = "<IMG alt=\"\" src='http://......./4_39422.jpg' style=\"xxx:\" onclick='javascript:if(this.width>screen.width-333)this.width=screen.width-333' border=0><IMG alt='x' src='http://......./4_394.jpgx' border=012 onclick='javascript:if(this.width>screen.width-333)this.width=screen.width-333' dypop='按此在新窗口浏览图片234'>";
s = Regex.Replace(s,@"<IMG\s+(((?<alt>alt=('[^']*'|""[^""]*""|[^\s>]*))|(?<src>src=('[^']*'|""[^""]*""|[^\s>]*))|(?<border>border=('[^']*'|""[^""]*""|[^\s>]*))|(?<others>[^=<>]+=('[^']*'|""[^""]*""|[^\s>]*)))\s*)*[^>]*>", "<IMG ${alt} ${src} ${border}>", RegexOptions.IgnoreCase);
Console.WriteLine(s);
Top
18 楼yypeng(www.517yn.net 生如夏花之绚烂 逝如秋叶之静)回复于 2004-12-03 10:16:01 得分 0
up
----------
www.517yn.netTop
19 楼xianle_xianle(仙乐)回复于 2004-12-03 10:20:18 得分 0
saucer(思归) so good ~~~
楼主,你只想得到 <IMG.*> 里的标准html 吗(saucer的就可以了)?
如果不是,那你要写的太多了,非常复杂!!!不推荐使用。
记得前几天看了一个叫 htmlDom(好像是,记不起来什么名了) 的类库挺不错的,
可以先转成 DOM 结构的然后对其节点进行重新组合。。。Top
20 楼longsky(长空)回复于 2004-12-03 10:52:32 得分 0
完美!!!
比着画了一个
s= Regex.Replace(s,@"<A\s+(((?<title>title=('[^']*'|""[^""]*""|[^\s>]*))|(?<href>href=('[^']*'|""[^""]*""|[^\s>]*))|(?<target>target=('[^']*'|""[^""]*""|[^\s>]*))|(?<others>[^=<>]+=('[^']*'|""[^""]*""|[^\s>]*)))\s*)*[^>]*>", "<A ${title} ${href} ${target}>", RegexOptions.IgnoreCase);
谢谢思归老大帮忙!
我是用这个来完成论坛发贴时处理来自粘贴其它处的网页的
http://www.chinasf.net/bbsTop




