我想使用以下代码查找字符串中的所有数字: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上试一试。
翻阅古今
TA贡献1780条经验 获得超5个赞
答案非常适合获取正数,但是,如果您有一个包含负数的字符串,也如下所示
"abc-123def987asdf"
你期待像下面这样的输出
[-123 987]
用下面的替换正则表达式
re := regexp.MustCompile(`[-]?\d[\d,]*[\.]?[\d{2}]*`)
- 2 回答
- 0 关注
- 1617 浏览
添加回答
举报
0/150
提交
取消