使用Perl,我试图解析一堆XML文件并试图在XML中找到任何形式的URL并打印它。我的正则表达式似乎不起作用,它没有返回任何匹配。我错过了什么?URL正则表达式不起作用
sub findURL{
local($inputLine, $outText);
$inputLine = $_[1];
while (length($inputLine) > 0)
{
if ($inputLine =~ /^(((http|https|ftp):\/\/)?([[a-zA-Z0-9]\-\.])+(\.)([[a-zA-Z0-9]]){2,4}([[a-zA-Z0-9]\/+=%&_\.~?\-]*))*$/)
{
$outText .= $&;
$inputLine = $';
}
else
{
$inputLine = "";
$outText .= "";
}
}
return $outText;
}
我不熟悉Perl但语法标记不匹配由于$ inputLine = $“; - 这可能也会影响你的问题。 – bradenkeith 2010-08-31 13:54:47
@bradenkeith不,这只是SO的braindead语法高亮。 '$''是保存正则表达式匹配后的有效变量;但是,它不应该被用作预匹配,匹配和后期匹配已被替换为不会减慢所有正则表达式代码的捕获。 – 2010-08-31 14:00:42
@Chas。我认为欧文斯是这方面的事情。只是觉得我只是指出了事情。感谢您的解释。 – bradenkeith 2010-08-31 14:15:18