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

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

Golang 正則表達(dá)式匹配字符串直到給定的字符序列

Golang 正則表達(dá)式匹配字符串直到給定的字符序列

Go
ibeautiful 2023-06-01 14:15:15
我有一個(gè)字符串,可以有一個(gè) -name 后跟值(可以有空格),也可以有 -descr 后跟一個(gè)值(-descr 后跟值可能不存在):示例字符串:runcmd -name abcd xyz -descr abc def或者runcmd -name abcd xyz使用 Go 語(yǔ)言,我該如何編寫(xiě)正則表達(dá)式,它會(huì)返回 -descr 之前的字符串(如果它存在)。所以,對(duì)于上面的兩個(gè)例子,結(jié)果應(yīng)該是:runcmd -name abcd xyz我在嘗試:regexp.MustCompile(`(-name ).+?=-descr`)但是,那沒(méi)有返回任何匹配項(xiàng)。我想知道正確的正則表達(dá)式來(lái)獲取字符串直到 -descr 如果它存在
查看完整描述

3 回答

?
蝴蝶刀刀

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

您可以在一個(gè)組中捕獲第一部分-name,然后匹配中間的部分并使用可選的第二個(gè)捕獲組來(lái)匹配-descr和后面的內(nèi)容。

然后您可以在創(chuàng)建所需結(jié)果時(shí)使用捕獲組。

^(.*? -name\b).*?(-descr\b.*)?$

正則表達(dá)式演示去演示

例如:

s := "runcmd -name abcd xyz -descr abc def"
re1 := regexp.MustCompile(`^(.*? -name\b).*?(-descr\b.*)?$`)
result := re1.FindStringSubmatch(s)
fmt.Printf(result[1] + "..." + result[2])

結(jié)果:

runcmd -name...-descr abc def


查看完整回答
反對(duì) 回復(fù) 2023-06-01
?
墨色風(fēng)雨

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

“不起作用”是指它不匹配任何東西,還是不符合您的期望?

https://regex101.com/通常在測(cè)試正則表達(dá)式時(shí)非常有用。

我不相信有一種簡(jiǎn)單的方法可以實(shí)現(xiàn)你想要的。如果我們可以假設(shè)文本之間不包含任何內(nèi)容,那么事情就會(huì)變得簡(jiǎn)單得多,-name-descr這種-情況下,regex.MustCompile(`-name ([^-]*)`)應(yīng)該可以工作

對(duì)于這種事情,通常使用 2 個(gè)正則表達(dá)式會(huì)更簡(jiǎn)單明了。所以第一個(gè)條帶-descr和它后面的任何內(nèi)容,以及第一個(gè)匹配項(xiàng)-name和所有后續(xù)字符。


查看完整回答
反對(duì) 回復(fù) 2023-06-01
?
紅顏莎娜

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

您在這里不是在處理常規(guī)語(yǔ)言,因此沒(méi)有理由淘汰(慢速)正則表達(dá)式引擎。strings 包就足夠了:


package main


import (

    "fmt"

    "strings"

    "unicode"

)


func main() {

    fmt.Printf("%q\n", f("runcmd -name abcd xyz -descr abc def"))

    fmt.Printf("%q\n", f("runcmd -name abcd xyz"))

    fmt.Printf("%q\n", f("-descr abc def"))

}


func f(s string) string {

    if n := strings.Index(s, "-descr"); n >= 0 {

        return strings.TrimRightFunc(s[:n], unicode.IsSpace)

    }

    return s

}


// Output:

// "runcmd -name abcd xyz"

// "runcmd -name abcd xyz"

// ""

在操場(chǎng)上試試:https ://play.golang.org/p/RFC65CYe6mp


查看完整回答
反對(duì) 回復(fù) 2023-06-01
  • 3 回答
  • 0 關(guān)注
  • 214 瀏覽
慕課專(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)