golang:使用正则表达式返回字符串之间的最短字符串
发布时间:2020-12-16 19:26:07 所属栏目:大数据 来源:网络整理
导读:我有字符串: “123abc456def456” 我想返回“123”和“456”之间的最短字符串,即“abc”.我试过FindStringSubmatch: package mainimport ( "fmt" "regexp")func main() { re := regexp.MustCompile("123(.*)456") fmt.Printf("%qn",re.FindStringSubmatch
我有字符串:
“123abc456def456” 我想返回“123”和“456”之间的最短字符串,即“abc”.我试过FindStringSubmatch: package main import ( "fmt" "regexp" ) func main() { re := regexp.MustCompile("123(.*)456") fmt.Printf("%qn",re.FindStringSubmatch("123abc456def456")) } 它只返回最长的字符串:
如何返回最短的字符串“abc”?
*是一个
greedy运算符,意味着它将尽可能多地匹配,并且仍然允许正则表达式的其余部分匹配.使用 *?对于非贪婪的匹配,意思是“零或更多 – 最好尽可能少”.
一旦你指定问号,你就说明了(一旦你找到数字“4”……停止,你就完成了.) re := regexp.MustCompile("123(.*?)456") rm := re.FindStringSubmatch("123abc456def456") fmt.Printf("%q",rm) // ["123abc456" "abc"] 或者只打印最短的匹配,我会这样做: re := regexp.MustCompile("123(.*?)456") rm := re.FindStringSubmatch("123abc456def456") if len(rm) != 0 {fmt.Printf("%q",rm[1])} // "abc" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |