Golang匹配字符提取子串:如何从URL中提取指定appid参数值
Go提取URL中appid参数的两种实现方案
方案1:使用标准库net/url解析(推荐)
因为输入本身是标准URL格式,直接用官方标准库解析参数是最稳定、容错率最高的方案,无需手动处理字符串匹配:
package main import ( "fmt" "net/url" ) func main() { rawUrl := "https://<some strings>appid=c5f1b8ee7da1&source=<some strings>&path=<some strings>" // 解析URL parsedUrl, err := url.Parse(rawUrl) if err != nil { panic(err) } // 直接获取query参数中的appid appid := parsedUrl.Query().Get("appid") fmt.Println(appid) // 输出:c5f1b8ee7da1 }
方案2:正则匹配(适用于非完整URL的字符串场景)
如果你的输入不是完整合法URL,只是包含对应格式的子串,可以用正则匹配appid=和后续相邻&之间的内容:
package main import ( "fmt" "regexp" ) func main() { rawStr := "https://<some strings>appid=c5f1b8ee7da1&source=<some strings>&path=<some strings>" // 编译正则:匹配appid=开头,后面跟非&的字符,捕获组取中间内容 re := regexp.MustCompile(`appid=([^&]+)`) match := re.FindStringSubmatch(rawStr) if len(match) >= 2 { appid := match[1] fmt.Println(appid) // 输出:c5f1b8ee7da1 } }
正则说明
appid=:固定匹配前缀([^&]+):捕获组,匹配所有不是&的字符,遇到第一个&就停止匹配,正好拿到两个符号之间的内容
内容的提问来源于stack exchange,提问作者Xuesong Ye
相关产品推荐
相关产品推荐

