gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 13:04:56 24 4
gpt4 key购买 nike

如何使用 Perl 正则表达式从纯文本中提取具有特定扩展名的特定域(可能带有可变子域)的所有 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

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

最佳答案

URI::Find专为解决这个问题而设计。它将找到所有 URI,然后您可以过滤它们。它有一些启发式方法来处理尾随标点符号之类的事情。

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

关于regex - 使用正则表达式从 Perl 纯文本中提取 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1053349/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com