Perl Regexp ::常见的意外匹配错误的URL

时间:2014-04-08 18:56:52

标签: regex perl url spaces

我试图整理一些客户数据。有几个条目将此作为URL:

http://not available

我以为我会跳过Regexp :: Common的那些(以及其他潜在的不匹配),但由于某种原因,带有未转义空格的URL匹配$ RE {URI} {HTTP}:

$ perl -MRegexp::Common='URI' -e 'my $url = q{http://not available}; print "yes\n" if $url =~ m#$RE{URI}{HTTP}#'
yes

我已经看过' { - nospace}'其他正则表达中提到的标志,但附加它似乎也没有在这里申请/工作。

我解释错了吗?在某些我不知道的上下文中,http URL中是否允许使用空格?有没有办法迫使正则表达式禁止它?

1 个答案:

答案 0 :(得分:4)

子字符串http://not是有效的URL。如果要检查给定字符串是否为URL(而不是:它只是包含 URL),则必须锚定匹配项:

/\A$RE{URI}{HTTP}\z/