2015-10-07 100 views
4

我想用下面的代码找到字符串中的所有号码串号:查找使用Golang正则表达式

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

我也尝试添加分隔符正则表达式,用正数作为第二个参数为FindAllString,使用数字只有像“123”作为第一个参数...

字符串,但输出始终[]

我好像错过了什么有关如何正则表达式去工作,但不能换我的头周围。 [0-9]+不是一个有效的表达式吗?

回答

16

问题出在你的第二个整数参数。从包文档regex引用:

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

您通过0,最多返回0个匹配项;那就是:(不是很有用)。

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

实施例:

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

输出:

[123 987] 

尝试在Go Playground

+0

哇,我确定我至少用'1'试过了它,但看起来我有另一个错误,然后再也不能再生成了。 '-1'很好,谢谢 –