regex需要去掉域名
我需要一个regexp来去掉url的域名部分。例如,如果我有以下url: 我希望正则表达式与“website-2000”匹配 如果你能解释一下正则表达式的每一部分都有哪些功能来帮助我理解它,那就太好了 谢谢 无需使用regexp,请使用urlparse模块regex需要去掉域名,regex,Regex,我需要一个regexp来去掉url的域名部分。例如,如果我有以下url: 我希望正则表达式与“website-2000”匹配 如果你能解释一下正则表达式的每一部分都有哪些功能来帮助我理解它,那就太好了 谢谢 无需使用regexp,请使用urlparse模块 >>> from urlparse import urlparse >>> '.'.join(urlparse("http://www.website-2000.com").netloc.split('
>>> from urlparse import urlparse
>>> '.'.join(urlparse("http://www.website-2000.com").netloc.split('.')[-2:])
'website-2000.com'
让我向您介绍这个奇妙的工具txt2re:
在这里,您可以使用regex进行实验,并生成多种语言的代码。这一个应该可以工作。它可能有一些缺点,但我现在想不出来。如果有人想改进它,请随意这样做
/http:\/\/(?:www\.)?([a-z0-9\-]+)(?:\.[a-z\.]+[\/]?).*/i
http:\/\/ matches the "http://" part
(?:www\.)? is a non-capturing group that matches zero or one "www."
([a-z0-9\-]+) is a capturing group that matches character ranges a-z, 0-9
in addition to the hyphen. This is what you wanted to extract.
(?:\.[a-z\.]+[\/]?) is a non-capturing group that matches the TLD part (i.e. ".com",
".co.uk", etc) in addition to zero or one "/"
.* matches the rest of the url
这一个让您不必担心任何http/https/ftp等。。。在前面,还可以捕获您的所有子域
(?:www\.)?([a-z0-9\-.]+)(?:\.[a-z\.]+[\/]?).*/i
我发现它失败的唯一次数是:
-如果是。位于域/子域之前,前面没有任何文本。包含在正则表达式捕获中。
-电子邮件与。在他们身上是行不通的。(在运行正则表达式之前,先检查已传递域中的@符号,以修复此问题)
-域/子域中的空白()
r/^[^:]+:\/\/[^/?#]+//
这对我有用
它将匹配任何方案或协议,然后在://匹配任何不是/?或者#。这三个字符,当它们第一次出现在URL中时,表示域的结束,所以我就结束了匹配。对不起,我需要用regexOh来完成这项工作,我真傻,没有注意到这不是一个python问题。嗯,这当然比我的庞然大物要简单一些。表达式:
http://wwww.([^/]+)
不适用于:http://example.com
或http://www.example.com?qvar=qval
。因为这个regext中有4个Ws,所以节省了我很多时间!现在链接已失效,*
最后是错误的。将其替换为[^]*
。它还捕获域名后的字符。例如,在http://www.website-2000.com jerry讨厌tom
,jerry讨厌tom
也将被正则表达式捕获。不在问题的范围内,但将有助于更广泛地使用您的正则表达式
r/^[^:]+:\/\/[^/?#]+//