首页 > 解决方案 > 如何从 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 标准库。

标签: go

解决方案


我认为由于您的示例也具有不正确的 URL,因此您需要使用正则表达式来提取 URL 中的域。请在下面找到示例代码以获取您共享的示例的域:

package main

import (
    "fmt"
    "regexp"
)

// Main function
func 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 未正确解析,您可以轻松更新 RegEx。

上述内容的 Go Playground 链接:此处


推荐阅读