用正则表达式作html2RSS服务

  h2R的想法已经有了很长时间了,今天终于开始动手。
主要用的是文本匹配:
None.gif
None.gif            XmlNode channles
= root.FirstChild;
None.gif
None.gif            Regex r;
None.gif            Match m;
None.gif
None.gif            r 
=   new  Regex( " href\\s*=\\s*(?:\ " ( ?< 1 > [ ^ \ " ]*)\ " | ( ?< 1 > \\S + ))\\s + \\S + \\s + title\\s *= \\s * ( ? :\ " (?<2>[^\ " ] * )\ " |(?<2>\\S+)) " ,RegexOptions.IgnoreCase | RegexOptions.Compiled);
None.gif            
for  (m  =  r.Match(str); m.Success; m  =  m.NextMatch()) 
ExpandedBlockStart.gifContractedBlock.gif            
dot.gif {
InBlock.gif            
//    rst+="link=" + m.Groups[1] + "\ntitle=" + m.Groups[2]+"\n";
InBlock.gif
                XmlElement oitem=xml.CreateElement("item");
InBlock.gif                XmlElement o
=xml.CreateElement("title");
InBlock.gif                o.InnerText
=m.Groups[2].Value;
InBlock.gif                oitem.AppendChild(o);
InBlock.gif                
InBlock.gif                o
=xml.CreateElement("link");
InBlock.gif                o.InnerText
=m.Groups[1].Value;
InBlock.gif                oitem.AppendChild(o);
InBlock.gif
InBlock.gif
InBlock.gif                channles.AppendChild(oitem);
ExpandedBlockEnd.gif            }

None.gif
None.gif 比如str=      < tr >< td >< tr  height =19 >< td  align =center  width =14 >< img  src =/icons/info/dot_h.gif  width =5  height =5 ></ td >< td  align =left >< href =/zzh/30630.nsf/(AllDocsByUnid)/C81ECBA70F9A8795C82570990031DE28?opendocument  target =_blank  title ="IC卡学生证及纸制学生证招领名单" > IC卡学生证及纸制学生证招领名单 </ a ></ td >< td  align =right  width =80 >< font  color =#000066 > 10-13 18:04 </ font ></ td ></ tr >< tr  height =19 >< td  align =center  width =14 >< img  src =/icons/info/dot_h.gif  width =5  height =5 ></ td >< td  align =left >< href =/zzh/30630.nsf/(AllDocsByUnid)/81BF13BCCAB992A1C825709900300465?opendocument  target =_blank  title ="关于“SRT计划项目优秀奖”申报的通知" > 关于“SRT计划项目优秀奖”申dot.gif </ a ></ td >< td  align =right  width =80 >< font  color =#000066 > 10-13 17:44 </ font ></ td ></ tr >< tr  height =19 >< td  align =center  width =14 >< img  src =/icons/info/dot_h.gif  width =5  height =5 ></ td >< td  align =left >< href =/zzh/30630.nsf/(AllDocsByUnid)/713C777073ED05DBC8257099002FE71B?opendocument  target =_blank  title ="新一轮SRT立项申请通知" > 新一轮SRT立项申请通知 </ a ></ td >
None.gif

正则表达式如是解析:
1、href\\s*=\\s*
匹配href,其后面的=两侧有没有空格、有几个空格都可以。
2、(?:\"(?<1>[^\"]*)\"|(?<1>\\S+))
摘取数据1,即link,其两侧有没有引号都可以。
3、\\s+\\S+\\s+
匹配至少一个空各,紧接着至少一个非空格,紧接着至少一个空各。
其实匹配的是 target=_blank

正在继续作。
发现正则表达式太强了,简直就是文本处理的SQL,比SQL还强!
现在觉得,不知自己是为了实现h2R服务而学习Regex,还是为了学习Regex而拿h2R服务做练习。
都挺好。

转载于:https://www.cnblogs.com/civ3/archive/2005/10/16/256119.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值