高分!正则表达式捕获网页里的内容

li_zhifu 2010-11-24 11:53:03
<meta name="keywords" content="这是内容"/>
<META name="keywords" content="这是内容"/>
<meta name="Keywords" content="这是内容"/>
<meta content="这是内容" name="keywords"/>
<meta content='这是内容' name='keywords'/>
<meta content='这是内容' name='keywords' >
最后得到结果:
这是内容
应考虑到适应网络上各种页面的需要,如大小写,name与content次序不同,标签最后以>而不是/>闭合等,应适应delphi里的TRegExp(或其它)的写法
...全文
68 7 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
bdmh 2010-11-24
这是提取name后面值的正则,不知道是不是你要的

procedure TForm1.Button1Click(Sender: TObject);
begin
GegValues(Memo1.Text);
end;

procedure TForm1.GegValues(s: string);
var
reg:TRegExpr;
begin
reg := TRegExpr.Create;
reg.Expression := '(<meta|<META)(.*?)(name="|name='+#39+')(.*?)("|'+#39+')';
if reg.Exec(s) then
begin
repeat
ListBox1.Items.Add(reg.Match[4]);
until not reg.ExecNext;
end;
reg.Free;
end;
  • 打赏
  • 举报
回复
haitao 2010-11-24
这个。。。。。。我都是用delphi写小函数实现的
最常用的函数就是:getTag
getByTag(sHtml,'content="','" ')得到内容
getByTag(sHtml,'name="','" ')得到key
当然,还需要移动、判断sHtml的当前位置
  • 打赏
  • 举报
回复
bdmh 2010-11-24
你要得到什么结果呢,怎么不写
  • 打赏
  • 举报
回复
亮剑_ 2010-11-24
小爬虫
  • 打赏
  • 举报
回复
bdmh 2010-11-24
[Quote=引用 5 楼 liangpei2008 的回复:]
老孟可以啊,正则写得还挺帅
[/Quote]
博士,有在笑话我,你小子这周又回不来了
  • 打赏
  • 举报
回复
liangpei2008 2010-11-24
老孟可以啊,正则写得还挺帅
  • 打赏
  • 举报
回复
相关推荐
发帖
语言基础/算法/系统设计
加入

1.6w+

社区成员

Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
申请成为版主
帖子事件
创建了帖子
2010-11-24 11:53
社区公告
暂无公告