我正在尝试使用下面的正则表达式从文本中提取域名,但它什么也不产生,有什么问题吗?我不知道这是否适合问这个“修复代码”的问题,也许我应该读更多。我只是想节省点时间。 谢谢
pat_url = re.compile(r'''
(?:https?://)*
(?:[\w]+[\-\w]+[.])*
(?P<domain>[\w\-]*[\w.](com|net)([.](cn|jp|us))*[/]*)
''')
print re.findall(pat_url,"http://www.google.com/abcde")
我希望输出为google.com
这是用regex解析url的唯一正确方法:
它是C++的,但通过删除附加值,你会发现微不足道的转换为Python。以及捕获的枚举。
另请参阅RFC3986作为regexp的原始源代码。
不要用regex来做这个。改用
urlparse
标准库。它更简单,更易于阅读/维护。http://docs.python.org/library/urlparse.html
第一个是在对
re.compile()
的调用中缺少re.VERBOSE
标志。第二个是应该对返回的对象使用方法。第三种是使用正则表达式,其中stdlib中已经存在适当的解析器。相关问题 更多 >
编程相关推荐