LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 755|回复: 1

如何提取下面的字符串

[复制链接]
发表于 2005-7-15 02:34:12 | 显示全部楼层 |阅读模式
<td><a href="http://mp3.baidu.com/m?tn=baidump3&ct=134217728&lm=-1&word=%D0%C7%BF%D5%CF%C2%20%D6%DC%B4%AB%D0%DB" target="_blank">星空下</a> <a href="http://mp3.baidu.com/m?tn=baidump3&ct=134217728&lm=-1&word=%D6%DC%B4%AB%D0%DB" target="_blank">周传雄</a></td>

请问如何提取 <a href ></a> 中的内容?
发表于 2005-7-15 09:09:54 | 显示全部楼层
从水木Perl版找了一篇, 可以获取url, 至于<a href="aa">bb</a>里面的bb,
我这而续貂了:
$regexp = q/<\s*a\b[^>]+\bhref\s*=\s*(?:["\']?)([^>\s"\']+)>([^<]+)</;
$1 is aa
$2 is bb

不过有个局限, 要求数据中<a ...>和</a>在同一行,并且一行中只能
有一个这样的链接,所以需要你预处理一下数据:
将文件中的所有换行符去掉,再将"</a>"替换成"</a>\n",这点不难做吧

发信人: yemanden (好好学习,天天向上。), 信区: Perl
标  题: Re: 怎么分析这个regular exp?
发信站: BBS 水木清华站 (Thu Feb 27 17:21:41 2003), 转信

试了一把,这个正则表达式写的还真不赖:-)
注意我在原先的那个表达式里加了一个"]".
建议斑竹可m一下这个表达式。

17:21:25$perl -c a.pl
a.pl syntax OK
17:21:29$
17:21:34$perl a.pl
<a href="http://www.abc.com/index.htm#toc >
Matched: [http://www.abc.com/index.htm#toc]
< a    href =   'ftp://ftp.abc.com/readme.txt hehe'    >
Matched: [ftp://ftp.abc.com/readme.txt]
17:23:28$more a.pl

$regexp = q/<\s*a\b[^>]+\bhref\s*=\s*(?:["\']?)([^>\s"\']+)/;

while (<STDIN>) {
  if (/$regexp/) {

     print "Matched: [$1]\n";
  } else {
    print "No matched!\n";
  }
}
17:23:34$

【 在 jinxxll (bryan) 的大作中提到: 】
: i have found a regular express to parse URL in web pages.
: "<\s*a\b[^>+\bhref\s*=\s*(?:["\']?)([^>\s"\']+)"
: 怎么分析这个,  敬请高手指点。 谢谢。


--

※ 修改:·yemanden 于 Feb 27 17:22:06 修改本文·[FROM: 166.111.174.130]
※ 修改:·yemanden 于 Feb 27 17:24:28 修改本文·[FROM: 166.111.174.130]
※ 来源:·BBS 水木清华站 smth.edu.cn·[FROM: 166.111.174.130]
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表