Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何在Perl中从同一变量正则化多个URL_Regex_Perl_Url - Fatal编程技术网

Regex 如何在Perl中从同一变量正则化多个URL

Regex 如何在Perl中从同一变量正则化多个URL,regex,perl,url,Regex,Perl,Url,我试图在数据库中搜索一个字段以提取URL。有时一个字段中会有多个URL,我希望将这些URL提取到单独的变量(或数组)中 我知道我的正则表达式不会涵盖所有的可能性。只要我标记任何以http开始并以空格结束的内容,我就可以了 我遇到的问题是,我的努力要么每个记录只能得到一个URL,要么每个URL的最后一个字母只能得到一个URL。我根据其他人发布的解决方案尝试了几种不同的技术,但我还没有找到适合我的解决方案 示例输入行: 测试你想要的任何其他东西 输出目标 $var[0]= $var[1]= 第一次尝

我试图在数据库中搜索一个字段以提取URL。有时一个字段中会有多个URL,我希望将这些URL提取到单独的变量(或数组)中

我知道我的正则表达式不会涵盖所有的可能性。只要我标记任何以http开始并以空格结束的内容,我就可以了

我遇到的问题是,我的努力要么每个记录只能得到一个URL,要么每个URL的最后一个字母只能得到一个URL。我根据其他人发布的解决方案尝试了几种不同的技术,但我还没有找到适合我的解决方案

示例输入行: 测试你想要的任何其他东西

输出目标 $var[0]= $var[1]=

第一次尝试: 如果($status=~m/http:(\S)+/g){ 打印“$&\n”; }

输出:

第二次尝试: @statusURL=($status=~m/http:(\S)+/g); 打印“@statusurls\n”

输出: 奥特

我不熟悉正则表达式,但由于每次尝试都使用相同的正则表达式,我不明白为什么它会返回如此不同的结果

谢谢你能提供的任何帮助

我看过这些帖子,要么没有找到我想要的东西,要么不知道如何实现它:

这一个似乎是最有希望的(这是我第二次尝试的地方,但它没有返回整个URL,只有字母:

这里面有一些很棒的东西。我很好奇是否需要将URL视为一个单词,因为它是以空格结尾的:

这一条提供了与前两条类似的建议

解决方案: @statusurls=($status=~m/(http:\S+)/g); 打印“@statusurls\n”


谢谢!

我认为您需要捕获多个字符。请尝试以下正则表达式:

m/http:(\S+)/g

您的回答是我需要的正确方向的推送。我使用了您发布的内容,并将移动到http的左侧,因为我需要在结果中使用它。谢谢!另外-不要使用
$&
-请参阅
@url=$status=~m{*(https*://[^]+)*}g;