再次使用Python正则表达式 - 匹配url

时间:2011-07-16 16:13:19

标签: python regex

我有这样的正则表达式:

 re.compile(r"((https?):((//)|(\\\\))+[\w\d:#@%/;$()~_?\+-=\\\.&]*)", re.MULTILINE|re.UNICODE)

但这不包括hashbangs (#!)。我需要改变什么才能让它发挥作用?我知道我可以添加!与#@%等分组,但会选择类似

的内容
Check this out: http://example.com/something/!!!

我想避免这种情况。

5 个答案:

答案 0 :(得分:10)

请勿尝试为匹配的网址制作自己的正则表达式,请使用已解决此类问题的其他人,例如this one

答案 1 :(得分:3)

它可能很长但实际上我的工作非常好。请试试这个       ((http|https)\:\/\/)?[a-zA-Z0-9\.\/\?\:@\-_=#]+\.([a-zA-Z]){2,6}([a-zA-Z0-9\.\&\/\?\:@\-_=#])*

它匹配以下所有示例

http://wwww.stackoverflow.com
abc.com
http://test.test-75.1474.stackoverflow.com/
stackoverflow.com/
stackoverflow.com
rfordyce@broadviewnet.com
http://www.example.com/etcetc
www.example.com/etcetc
example.com/etcetc
user:pass@example.com/etcetc
(www.itmag.com)
example.com/etcetc?query=aasd
example.com/etcetc?query=aasd&dest=asds
http://stackoverflow.com/questions/6427530/regular-expression-pattern-to-
match-url-with
www/Christina.V.Scott@gmail.com
line.lundvoll.nilsen@telemed.no.
s.hossain@unsw.edu.au 
s.hossain@unsw.edu.au     

答案 2 :(得分:1)

这是一个常见问题,请使用默认库。

对于python使用urlparse

答案 3 :(得分:0)

我承认我有点担心一个需要像这样的正则表达式来匹配URL的应用程序。这就是说,这似乎对我有用:

((https?):((//)|(\\\\))+([\w\d:#@%/;$()~_?\+-=\\\.&](#!)?)*)

答案 4 :(得分:0)

基于 this link,我们可以使用库验证器

例如:

import validators

valid=validators.url('https://codespeedy.com/')
if valid==True:
    print("Url is valid")
else:
    print("Invalid url")