为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
白猪掌柜的 2021-11-15 15:23:05
我想使用以下代码查找字符串中的所有数字:re:=regexp.MustCompile("[0-9]+")fmt.Println(re.FindAllString("abc123def", 0))我还尝试向正则表达式添加分隔符,使用正数作为 的第二个参数FindAllString,使用像“123”这样的数字字符串作为第一个参数......但输出总是 []我似乎错过了关于 Go 中正则表达式如何工作的一些东西,但我无法理解它。是[0-9]+不是一个有效的表达?
查看完整描述

2 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

问题在于您的第二个整数参数。引用自包文档regex

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

您通过,0因此最多会返回 0 个匹配项;即:(不是很有用)。

尝试通过-1以表明您想要所有。

例子:

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

输出:

[123 987]

Go Playground上试一试。


查看完整回答
反对 回复 2021-11-15
?
翻阅古今

TA贡献1780条经验 获得超5个赞

答案非常适合获取正数,但是,如果您有一个包含负数的字符串,也如下所示

"abc-123def987asdf"

你期待像下面这样的输出

[-123 987]

用下面的替换正则表达式

re := regexp.MustCompile(`[-]?\d[\d,]*[\.]?[\d{2}]*`)


查看完整回答
反对 回复 2021-11-15
  • 2 回答
  • 0 关注
  • 1617 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信