一尘不染

使用Golang正则表达式查找字符串中的数字

go

我想用以下代码查找字符串中的所有数字:

re:=regexp.MustCompile("[0-9]+")
fmt.Println(re.FindAllString("abc123def", 0))

我还尝试将定界符添加到正则表达式,使用正数作为的第二个参数FindAllString,使用仅数字字符串,例如“ 123”作为第一个参数…

但是输出总是 []

我似乎想念一下正则表达式在Go中的工作原理,但是无法绕开它。这[0-9]+不是有效的表达方式吗?


阅读 3981

收藏
2020-07-02

共1个答案

一尘不染

问题出在你的第二个整数参数上。引用以下软件包的文档regex

这些例程使用一个额外的整数参数n;如果n> = 0,则该函数最多返回n个匹配项/子匹配项。

您通过了,0因此最多将返回0个匹配;那就是: 没有 (不是真的有用)。

尝试通过-1以表明您想要全部。

例:

re := regexp.MustCompile("[0-9]+")
fmt.Println(re.FindAllString("abc123def987asdf", -1))

输出:

[123 987]

Go Playground上尝试一下。

2020-07-02