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

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

將字符串按空格拆分成數(shù)組,部分被引用時除外,golang中除外

將字符串按空格拆分成數(shù)組,部分被引用時除外,golang中除外

Go
qq_笑_17 2023-04-17 16:30:50
目前,我有以下代碼:cmd := "echo \"Hello world\"!\x00"re := regexp.MustCompile(`[^\s"']+|"([^"]*)"|'([^']*)`)args := re.FindAllString(cmd, -1)fmt.Println("%v", args)這會產(chǎn)生 array %v [echo "Hello world" !],但我希望輸出是%v [echo "Hello world"!](基本上,引號應(yīng)包含其中的所有內(nèi)容作為數(shù)組中的一項,但終止引號不應(yīng)表示數(shù)組中下一項的立即開始)。我該怎么做呢?
查看完整描述

2 回答

?
白衣染霜花

TA貢獻1796條經(jīng)驗 獲得超10個贊

改進的正則表達式。這只匹配引用段或非空白段。可以處理錯誤的單引號。


package main


import (

    "fmt"

    "regexp"

)


func main() {

    cmd := "echo \"Hello world\"!\x00"

    re := regexp.MustCompile(`("[^"]+?"\S*|\S+)`)

    args := re.FindAllString(cmd, -1)

    fmt.Println("%v", args)

    fmt.Println("%v", len(args))

}


查看完整回答
反對 回復(fù) 2023-04-17
?
富國滬深

TA貢獻1790條經(jīng)驗 獲得超9個贊

您正在顯式匹配", 然后是任意數(shù)量的^", 然后", 所以它當然會在第二個之后終止"。[^\s"']*如果您將其與(匹配除空格和 ) 之外的任何內(nèi)容包裝"在一個分組中,我認為它可能會為您提供所需的內(nèi)容。讓我知道這個結(jié)果是否令人滿意。

re?:=?regexp.MustCompile(`[^\s"']+|([^\s"']*"([^"]*)"[^\s"']*)+|'([^']*)`)

我不是很精通正則表達式的效率,所以如果這給表達式增加了太多的復(fù)雜性,請原諒。

編輯:對這個特定表達式的一個警告是,一個單一的"會把一些東西分成兩個結(jié)果,例如hi"there會分裂成hithere。


查看完整回答
反對 回復(fù) 2023-04-17
  • 2 回答
  • 0 關(guān)注
  • 144 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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