如何在Python中使用正则表达式验证URL?

发布于 2021-01-29 19:30:03

我正在Google App Engine上构建应用程序。我是Python的新手,在过去3天里,我一直对下面的问题problem之以鼻。

我有一个代表RSS Feed的类,在这个类中,我有一个名为setUrl的方法。输入此方法的是URL。

我正在尝试使用re python模块来验证RFC 3986 Reg-
ex(http://www.ietf.org/rfc/rfc3986.txt

下面是一个片段, 应该 工作吗?

p = re.compile('^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?')
m = p.match(url)
if m:
  self.url = url
  return url
关注者
0
被浏览
281
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    urlparsepy2py3)模块是解析(并验证)URL的一种简单方法。

    正则表达式是太多的工作。


    没有“验证”方法,因为几乎所有内容都是有效的URL。有一些标点符号规则将其拆分。没有标点符号,您仍然有一个有效的URL。

    仔细检查RFC,看看是否可以构造“无效” URL。规则非常灵活。

    例如:::::,一个有效的URL。路径是":::::"。漂亮的文件名,但是有效的文件名。

    另外,/////也是有效的网址。netloc(“主机名”)为""。路径是"///"。再次,愚蠢。也有效。此URL规范化为"///"等效的URL

    类似的东西"bad://///worse/////"是完全有效的。哑巴但有效。

    底线 。解析它,然后查看各个部分,看看它们是否在某种程度上令人不快。

    您是否希望方案始终为“ http”?您是否希望netloc始终为“
    www.somename.somedomain”?您是否要让路径看起来像Unix?还是像窗户?是否要删除查询字符串?还是保留它?

    这些不是RFC指定的验证。这些是您的应用程序独有的验证。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看