我需要一个正则表达式来剥离域名部分的网址。举个例子,如果我有下面的url:
我希望正则表达式匹配的是'website-2000‘。
如果您还能解释正则表达式的每个部分做什么,以帮助我理解它,那就太好了。
谢谢
发布于 2011-01-25 17:40:47
这个应该行得通。它可能有一些缺点,但我现在想不出任何缺点。如果任何人想要改进它,请随时这样做。
/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发布于 2011-01-25 17:38:42
让我向您介绍这个很棒的工具txt2re:regular expression generator
在这里,您可以尝试使用正则表达式并以多种语言生成代码。
发布于 2011-10-10 22:50:50
这使您不必担心任何http/https/ftp等...在前面,也捕获了你所有的子域。
(?:www\.)?([a-z0-9\-.]+)(?:\.[a-z\.]+[\/]?).*/i我发现它唯一失败的时候是:-如果一个。在没有任何文本的域/子域之前,。包含在正则表达式捕获中。-电子邮件。都不会起作用。(在运行regex之前,通过检查传递的域中的@符号来修复此问题)-域/子域中间的空白
https://stackoverflow.com/questions/4791700
复制相似问题