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

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

如何根據(jù)某些前綴和后綴在 Go 中拆分字符串?

如何根據(jù)某些前綴和后綴在 Go 中拆分字符串?

Go
冉冉說(shuō) 2023-02-21 19:06:29
假設(shè)我有這么大的字符串:13242222160a06032c06cf00ca5c160bdc70102dfe0a12bc00a3b101000000cd01d60d0a13242222160a06032c0ccf00ca5bf10bdc74d029d05401fe0a12bc00a3b101000000d1e4270d0a1324222160a06032c1e0a12bc00a3b101000000d233ed0d0a我希望它被拆分成數(shù)組,前綴為 1324,后綴為 0d0a。結(jié)果是一個(gè)包含 3 個(gè)元素的數(shù)組:arr[0] = 13242222160a06032c06cf00ca5c160bdc70102dfe0a12bc00a3b101000000cd01d60d0aarr[1] = 13242222160a06032c0ccf00ca5bf10bdc74d029d05401fe0a12bc00a3b101000000d1e4270d0aarr[2] = 1324222160a06032c1e0a12bc00a3b101000000d233ed0d0a這是我的代碼:package mainimport (    "fmt"    "regexp")func main() {    var testData = "13242222160a06032c06cf00ca5c160bdc70102dfe0a12bc00a3b101000000cd01d60d0a13242222160a06032c0ccf00ca5bf10bdc74d029d05401fe0a12bc00a3b101000000d1e4270d0a1324222160a06032c1e0a12bc00a3b101000000d233ed0d0a"    re := regexp.MustCompile("^1324[0-9a-zA-Z]*0d0a")    matches := re.FindAllString(testData, -1)    for _, m := range matches {        fmt.Printf("%s\n", m)    }}它只是打印相同的整個(gè)字符串,這很可能意味著我的正則表達(dá)式是錯(cuò)誤的。什么是正確的形式?
查看完整描述

2 回答

?
慕碼人2483693

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

您的正則表達(dá)式有兩個(gè)問(wèn)題。插入符號(hào) ( ^) 表示您只想匹配字符串的開(kāi)頭,因此根據(jù)定義您只會(huì)得到一個(gè)結(jié)果。另一個(gè)問(wèn)題是 the*是一個(gè)貪婪的量詞,這意味著它將盡可能多地匹配之前的字符集。這意味著正則表達(dá)式將一直搜索到后綴的字符串末尾,只有在找不到時(shí)才回溯。你想要的是一個(gè)不情愿的量詞, so *?,它只匹配滿足正則表達(dá)式的最少字符數(shù)。

放在一起,您的正則表達(dá)式字符串應(yīng)該是"1324[0-9a-zA-Z]*?0d0a". 我在 Go 操場(chǎng)上測(cè)試了它,它似乎得到了你想要的結(jié)果。https://go.dev/play/p/qolk3vHNxKT


查看完整回答
反對(duì) 回復(fù) 2023-02-21
?
慕標(biāo)琳琳

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

在關(guān)鍵字上使用strings.Split1324然后在每個(gè)條目上加上前綴會(huì)簡(jiǎn)單得多。


該results類(lèi)型是一段字符串,每個(gè)字符串由提供的分隔符分隔。迭代一次以在定界符前面添加前綴以獲得所需的結(jié)果


package main


import (

    "fmt"

    "strings"

)


func main() {

    var output []string

    var testData = "13242222160a06032c06cf00ca5c160bdc70102dfe0a12bc00a3b101000000cd01d60d0a13242222160a06032c0ccf00ca5bf10bdc74d029d05401fe0a12bc00a3b101000000d1e4270d0a1324222160a06032c1e0a12bc00a3b101000000d233ed0d0a"

    results := strings.Split(testData, "1324")

    for idx := range results {

        if len(results[idx]) > 0 {

            output = append(output, fmt.Sprintf("%s%s", "1324", results[idx]))

        }

    }

}

請(qǐng)注意,在我的 M1 Macbook Pro 上,Split()當(dāng)使用 Go 的基準(zhǔn)測(cè)試運(yùn)行時(shí),該示例的性能遠(yuǎn)好于正則表達(dá)式選項(xiàng)。


查看完整回答
反對(duì) 回復(fù) 2023-02-21
  • 2 回答
  • 0 關(guān)注
  • 135 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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