使用Ruby扫描方法捕获组不能按预期工作

我需要从多行字符串中获取一组浮点数(正数和负数)。 例如: -45.124, 1124.325

这是我做的:

 text.scan(/(\+|\-)?\d+(\.\d+)?/) 

虽然它在regex101上工作正常(捕获组0匹配我需要的所有东西),但它在Ruby代码中不起作用。

任何想法为什么会发生以及如何改进?

您应该删除捕获组,或使它们不捕获:

 text = " -45.124, 1124.325" puts text.scan(/[+-]?\d+(?:\.\d+)?/) 

见demo ,输出:

 -45.124 1124.325 

请参阅scan文档 :

如果模式不包含任何组,则每个单独的结果由匹配的字符串$&如果模式包含组,则每个单独的结果本身就是一个包含每个组一个条目的数组。

好吧,如果你还需要匹配像.04那样的花车你可以使用[+-]?\d*\.?\d+ 。 看另一个演示

 ([+-]?\d+\.\d+) 

假设小数点前有一个前导数字

看看Rubular的演示