正则表达式问题

shw586 2011-04-15 07:49:13
假设有如下文本:
text 1
text 2
text 3
text 4
其中text 3有可能不出现,现想捕获text 2的内容,求解
...全文
92 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
shw586 2011-04-15
  • 打赏
  • 举报
回复
自己搞定,留作纪念
<!-- publish_helper name=.*-->(?<content>[\w\W]*?)(<!-- publish_helper_end -->|<style type=\"text/css\">\s\.blkContainerSblkCon p.page,.page)
shw586 2011-04-15
  • 打赏
  • 举报
回复
我的意思是我只要正文内容,不要导航那一块的东西
机器人 2011-04-15
  • 打赏
  • 举报
回复
修改下:

var re = new Regex("(?is)<div class=\"blkContainerSblk\">(.*?)<\\!-- 正文内容 end -->");
MatchCollection mc = re.Matches("......");
foreach (Match ma in mc)
{
//...
}
机器人 2011-04-15
  • 打赏
  • 举报
回复
(?<=<div class=\"blkContainerSblk\">)(.*?)(?=<\!-- 正文内容 end -->)
shw586 2011-04-15
  • 打赏
  • 举报
回复
实际用例:
地址1:http://tech.sina.com.cn/mobile/n/2011-04-15/07125408748.shtml
地址2:http://tech.sina.com.cn/mobile/n/2011-04-15/06271718531.shtml

第一篇文章带分页链接,第2篇不带分页链接,我想用一个正则匹配这两种情况获取正文内容
  • 打赏
  • 举报
回复
规则不明确
抓网页一般根据Tag来抓取
机器人 2011-04-15
  • 打赏
  • 举报
回复
没有实际的用例,写出来不准。。。

(?is)(?<=text 1)(.*?)(text 3){0,1}(?=text 4)
shw586 2011-04-15
  • 打赏
  • 举报
回复
为了简化问题,我分别用text 1-4代表真实的文本,比如说我抓网页,开头都是固定不变的,就是text 1代表的内容,text 2代表我要抓的部分,text 3代表多余的部分,而且有的网页可能没有此部分,text 4表示结束部分,我只想要text 2的内容,今天尝试了许多方式,要么就是text 2 text 3一起被捕获,要么就没有匹配。
机器人 2011-04-15
  • 打赏
  • 举报
回复
就是取 text 2 ?
sihonglaoren 2011-04-15
  • 打赏
  • 举报
回复
这个和正则有关?

17,741

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧