Python正则表达式再探 - 匹配URL
我有这样一个正则表达式:
re.compile(r"((https?):((//)|(\\\\))+[\w\d:#@%/;$()~_?\+-=\\\.&]*)", re.MULTILINE|re.UNICODE)
但是它没有包含 哈希bang (#!)
。我需要改什么才能让它正常工作?我知道我可以在一个包含 #@%
等的组里加上 !
,但是那样会选中像这样的内容:
Check this out: http://example.com/something/!!!
而我想避免那种情况。
7 个回答
6
这是一个常见的问题。可以使用默认的库来解决。
如果你在用Python,可以使用urlparse这个工具。
10
这段内容可能有点长,但实际上我的这个方法效果挺不错的。请试试这个:
((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
21
别自己去写匹配网址的正则表达式。可以用别人已经解决过这个问题的,比如这个。