gpt4 book ai didi

regex - Golang 正则表达式匹配字符串直到给定的字符序列

转载 作者:数据小太阳 更新时间:2023-10-29 03:41:55 24 4
gpt4 key购买 nike

我有一个字符串,可以有一个 -name 后跟值(可以有空格),也可以有 -descr 后跟一个值(-descr 后跟值可能不存在):

示例字符串:

runcmd -name abcd xyz -descr abc def

runcmd -name abcd xyz

使用 Go 语言,我该如何编写正则表达式,它会返回 -descr 之前的字符串(如果它存在)。所以,对于上面的两个例子,结果应该是:

runcmd -name abcd xyz

我在尝试:

regexp.MustCompile(`(-name ).+?=-descr`)

但是,那没有返回任何匹配项。我想知道正确的正则表达式来获取字符串直到 -descr 如果它存在

最佳答案

您可以在组中捕获带有 -name 的第一部分,然后匹配中间的内容,并使用可选的第二个捕获组来匹配 -descr 和后面的内容。

然后您可以在创建所需结果时使用捕获组。

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

Regex demo | Go demo

例如:

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])

结果:

runcmd -name...-descr abc def

关于regex - Golang 正则表达式匹配字符串直到给定的字符序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54114352/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com