regex - Perl Regexp::Common 意外匹配错误的 URL

标签 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 中是否允许使用空格?有没有办法强制正则表达式不允许它?

最佳答案

子字符串 http://not 是有效的 URL。如果您想检查给定字符串一个URL(而不是:它仅包含一个URL),您必须锚定匹配:

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

关于regex - Perl Regexp::Common 意外匹配错误的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22945877/

相关文章:

python - 从 Perl 中的链接检索媒体(图像、视频等)

python - 使用 Regex 提取多行 SAS 代码

jquery - 正则表达式要求至少一位数字或留空

java - 忽略在正则表达式中创建单词的开头

java - 无法转换 .toURI() 的 URL 示例?

php - 动态页面的 Apache mod 重写

java - 使用 Hibernate 将 SQL 列的 varchar 类型映射到 Java 的 java.net.URL

C# 从字符串中提取名称

regex - 替换 : "\p{Cntrl}" - "\P{Print}"

perl - 为什么一定要打1;在 Perl 5 模块的末尾?