正则表达式:
(?x)\A
[a-z][a-z0-9+\-.]*:// # Scheme
([a-z0-9\-._~%!$&'()*+,;=]+@)? # User
([a-z0-9\-._~%]+ # Named or IPv4 host
|\[[a-z0-9\-._~%!$&'()*+,;=:]+\]) # IPv6+ host
:(?P<port>[0-9]+) # Port number
Python代码:
import re
subject = 'http://www.regexcookbook.com:80/'
reobj = re.compile(r'''(?x)\A
[a-z][a-z0-9+\-.]*:// # Scheme
([a-z0-9\-._~%!$&'()*+,;=]+@)? # User
([a-z0-9\-._~%]+ # Named or IPv4 host
|\[[a-z0-9\-._~%!$&'()*+,;=:]+\]) # IPv6+ host
:(?P<port>[0-9]+) # Port number
''')
match = reobj.search(subject)
if match:
print match.group(3)