我正在尝试整理一些客户数据。有几个条目将此作为 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 中是否允许使用空格?有没有办法强制正则表达式不允许它?
最佳答案
子字符串 http://not
是有效的 URL。如果您想检查给定字符串是一个URL(而不是:它仅包含一个URL),您必须锚定匹配:
/\A$RE{URI}{HTTP}\z/
关于regex - Perl Regexp::Common 意外匹配错误的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22945877/