为了账号安全,请及时绑定邮箱和手机立即绑定

如何从 URL 检索域?

如何从 URL 检索域?

Go
小唯快跑啊 2022-09-26 14:47:54
在 Go 中,如何仅从 URL 字符串中提取域名?以前:https://www.example.com/some-random-urlwww.example.com/some-random-urlexample.com/some-random-urlwww.example.comsubdomain.example.com后:example.com另外,我仅限于使用Golang标准库。
查看完整描述

2 回答

?
胡子哥哥

TA贡献1825条经验 获得超6个赞

我认为由于您的示例也有不正确的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 未正确解析,您可以轻松更新正则表达式。


去游乐场链接以上:这里


查看完整回答
反对 回复 2022-09-26
?
萧十郎

TA贡献1815条经验 获得超13个赞

我终于想通了。


package main


import (

    "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.com


https://play.golang.org/p/Li0PviAr2jU


查看完整回答
反对 回复 2022-09-26
  • 2 回答
  • 0 关注
  • 191 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号