如何从 URL 检索域?

在 Go 中,如何仅从 URL 字符串中提取域名?


以前:


https://www.example.com/some-random-url

www.example.com/some-random-url

example.com/some-random-url

www.example.com

subdomain.example.com

后:


example.com

另外,我仅限于使用Golang标准库。


小唯快跑啊
浏览 192回答 2
2回答

胡子哥哥

我认为由于您的示例也有不正确的URL,因此您需要使用常规表达来提取URL中的域。请查找下面的示例代码,以获取您共享的示例的域:package mainimport (    "fmt"    "regexp")// Main functionfunc main() {    // Finding regexp from the given string    // Using FindString() method    m := regexp.MustCompile(`\.?([^.]*.com)`)    fmt.Println(m.FindStringSubmatch("https://www.example.com/some-random-url")[1])    fmt.Println(m.FindStringSubmatch("www.example.com/some-random-url")[1])    fmt.Println(m.FindStringSubmatch("example.com/some-random-url")[1])    fmt.Println(m.FindStringSubmatch("www.example.com")[1])    fmt.Println(m.FindStringSubmatch("subdomain.example.com")[1])}理想情况下,这涵盖了所有情况(包括格式不正确的URL)。如果有任何 URL 未正确解析,您可以轻松更新正则表达式。去游乐场链接以上:这里。

萧十郎

我终于想通了。package mainimport (    "fmt"    "log"    "net/url"    "strings")func main() {    url, err := url.Parse("https://www.example.com")    if err != nil {        log.Fatal(err)    }    parts := strings.Split(url.Hostname(), ".")    domain := parts[len(parts)-2] + "." + parts[len(parts)-1]    fmt.Println(domain)}example.com如果域名是这样的,它会给你一个恐慌。subdomain.example.comhttps://play.golang.org/p/Li0PviAr2jU
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go