Regex 如何在Perl中从同一变量正则化多个URL
我试图在数据库中搜索一个字段以提取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”Regex 如何在Perl中从同一变量正则化多个URL,regex,perl,url,Regex,Perl,Url,我试图在数据库中搜索一个字段以提取URL。有时一个字段中会有多个URL,我希望将这些URL提取到单独的变量(或数组)中 我知道我的正则表达式不会涵盖所有的可能性。只要我标记任何以http开始并以空格结束的内容,我就可以了 我遇到的问题是,我的努力要么每个记录只能得到一个URL,要么每个URL的最后一个字母只能得到一个URL。我根据其他人发布的解决方案尝试了几种不同的技术,但我还没有找到适合我的解决方案 示例输入行: 测试你想要的任何其他东西 输出目标 $var[0]= $var[1]= 第一次尝
谢谢!我认为您需要捕获多个字符。请尝试以下正则表达式:
m/http:(\S+)/g
您的回答是我需要的正确方向的推送。我使用了您发布的内容,并将移动到http的左侧,因为我需要在结果中使用它。谢谢!另外-不要使用
$&
-请参阅@url=$status=~m{*(https*://[^]+)*}g;