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

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(或其它)的写法
...全文
111 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
  • 打赏
  • 举报
回复
老孟可以啊,正则写得还挺帅

16,747

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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