加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用正则表达式从Perl中提取纯文本的URL

发布时间:2020-12-14 06:31:13 所属栏目:百科 来源:网络整理
导读:如何使用Perl regexp从纯文本中提取具有特定扩展名的特定域(可能具有可变子域)的所有URL?我努力了: my $stuff = 'omg http://fail-o-tron.com/bleh omg omg omg omg omg http://homepage.com/woot.gif dfgdfg http://shomepage.com/woot.gif aaa';while($s
如何使用Perl regexp从纯文本中提取具有特定扩展名的特定域(可能具有可变子域)的所有URL?我努力了:
my $stuff = 'omg http://fail-o-tron.com/bleh omg omg omg omg omg http://homepage.com/woot.gif dfgdfg http://shomepage.com/woot.gif aaa';
while($stuff =~ m/(http://.*?homepage.com/.*?.gif)/gmsi)
{
print $1."n";
}

它失败了,给了我:

http://fail-o-tron.com/bleh omg omg omg omg omg http://homepage.com/woot.gif
http://shomepage.com/woot.gif

我认为这不会发生,因为我正在使用.* ?,这应该是非贪婪的,并给我最小的匹配.谁能告诉我我做错了什么? (我不想要一些超级复杂的罐装正则表达式来验证URL;我想知道我做错了什么,所以我可以从中学习.)

URI::Find是专门为解决这个问题而设计的.它将找到所有URI,然后您可以过滤它们.它有一些启发式来处理跟踪标点符号等事情.

更新:最近更新以处理Unicode.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读