golang:使用正则表达式返回字符串之间的最短字符串

前端之家收集整理的这篇文章主要介绍了golang:使用正则表达式返回字符串之间的最短字符串前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有字符串:

“123abc456def456”

我想返回“123”和“456”之间的最短字符串,即“abc”.我试过FindStringSubmatch:

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("123(.*)456")
    fmt.Printf("%q\n",re.FindStringSubmatch("123abc456def456"))
}

它只返回最长的字符串:

[“123abc456def456” “abc456def”]

如何返回最短的字符串“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"

猜你在找的Go相关文章