第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

從字符串中提取信息

從字符串中提取信息

Go
一只斗牛犬 2023-07-17 13:48:54
https://website-name.some-domain.some-sub-domain.com/resourceId當(dāng)給定(類型 1)或(類型 2)形式的字符串時(shí)https://website-name.some-sub-domain.com/resourceId?randomContent,我只需要提取兩個(gè)子字符串。我需要website-name一個(gè)字符串和resourceId另一字符串。我使用以下代碼提取了網(wǎng)站名稱:s := "https://website-name.some-domain.some-sub-domain.com/resourceId?randomContent"w := regexp.MustCompile("https://(.*?)\\.")website := w.FindStringSubmatch(s)fmt.Println(website[1])我有其他正則表達(dá)式來獲取resourceIds := "https://website-name.some-domain.some-sub-domain.com/resourceId?randomContent"r := regexp.MustCompile("com/(.*?)\\?")resource := r.FindStringSubmatch(s)fmt.Println(resource[1])這適用于任何以?或結(jié)尾的字符串?randomContent。但我的字符串沒有尾隨?,我無法處理這種情況(類型 1)。我試圖"(com/(.*?)\\?)|(com/(.*?).*)"得到resourceId但沒有用。我無法找到一種優(yōu)雅的方法來提取這兩個(gè)子字符串。注意:therandomContent是任意長的子串,the 也是如此resourceId。但里面resourceId不會有。?遇到a ?,就可以說resourceId結(jié)束了。另外,website-name可以不同,但模式是相同的 - 任意子域和 a.com將出現(xiàn)在字符串中。這是我嘗試過的: https: //play.golang.org/p/MGQIT5XRuuh
查看完整描述

3 回答

?
慕容3067478

TA貢獻(xiàn)1773條經(jīng)驗(yàn) 獲得超3個(gè)贊

您顯示的示例字符串是普通的 HTTPS URL,因此您可以使用該net/url包來解析它們。是website-name的第一部分parsedUrl.Hostname(),resourceId是parsedUrl.Path較少的前導(dǎo)部分/。


u, err := url.Parse(s)

if err != nil {

    panic(err)

}

host := u.Hostname()

first := strings.SplitN(host, ".", 2)[0]

fmt.Printf("website-name: %s\n", first)

fmt.Printf("resourceId: %s\n", u.Path[1:])

https://play.golang.org/p/fnF2RTBuFxR有一個(gè)完整的示例,包括問題中的兩個(gè) URL 字符串。即使 URL 的主機(jī)名部分不以 結(jié)尾.com,或者路徑部分包含該字符串,或者存在端口號或哈希片段或其他變體,此方法也有效。


查看完整回答
反對 回復(fù) 2023-07-17
?
月關(guān)寶盒

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超5個(gè)贊

我猜這個(gè)表達(dá)式可能有效:


(?i)https?:\/\/(www\.)?([^.]*)[^\/]*\/([^?\r\n]*)

測試

package main


import (

    "regexp"

    "fmt"

)


func main() {

    var re = regexp.MustCompile(`(?m)(?i)https?:\/\/(www\.)?([^.]*)[^\/]*\/([^?\r\n]*)`)

    var str = `https://website-name.some-domain.some-sub-domain.com/resourceId?randomContent


https://website-name.some-domain.some-sub-domain.com/resourceId`


    for i, match := range re.FindAllString(str, -1) {

        fmt.Println(match, "found at index", i)

    }

}

演示


查看完整回答
反對 回復(fù) 2023-07-17
?
揚(yáng)帆大魚

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超9個(gè)贊

也許像這樣簡單的事情會有幫助。


您可以使用以下正則表達(dá)式提取網(wǎng)站名稱并返回第一組:


//([^/.]+)


//         start with //

([^/.]+)   match anything until first dot

您可以使用以下正則表達(dá)式提取resourceId并返回第一組:


.com/([^/?]+)


.com/      start with .com

([^/?]+)   match everything until the first ? (if exists, else matches till end)

鏈接到 Go Playground


查看完整回答
反對 回復(fù) 2023-07-17
  • 3 回答
  • 0 關(guān)注
  • 161 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號