使用 Golang regexp 查找字符串中的数字

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


re:=regexp.MustCompile("[0-9]+")

fmt.Println(re.FindAllString("abc123def", 0))

我还尝试向正则表达式添加分隔符,使用正数作为 的第二个参数FindAllString,使用像“123”这样的数字字符串作为第一个参数......


但输出总是 []


我似乎错过了关于 Go 中正则表达式如何工作的一些东西,但我无法理解它。是[0-9]+不是一个有效的表达?


白猪掌柜的
浏览 1618回答 2
2回答

交互式爱情

问题在于您的第二个整数参数。引用自包文档regex:这些例程采用一个额外的整数参数,n;如果 n >= 0,函数最多返回 n 个匹配/子匹配。您通过,0因此最多会返回 0 个匹配项;即:无(不是很有用)。尝试通过-1以表明您想要所有。例子:re := regexp.MustCompile("[0-9]+") fmt.Println(re.FindAllString("abc123def987asdf", -1))输出:[123 987]在Go Playground上试一试。

翻阅古今

答案非常适合获取正数,但是,如果您有一个包含负数的字符串,也如下所示"abc-123def987asdf"你期待像下面这样的输出[-123 987]用下面的替换正则表达式re := regexp.MustCompile(`[-]?\d[\d,]*[\.]?[\d{2}]*`)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go