我需要从多行字符串中获取一组浮点数(正数和负数).例如:-45.124, 1124.325等等
这是我做的:
text.scan(/(\+|\-)?\d+(\.\d+)?/)
Run Code Online (Sandbox Code Playgroud)
虽然它在regex101上工作正常(捕获组0匹配我需要的所有东西),但它在Ruby代码中不起作用.
任何想法为什么会发生以及如何改进?
您应该删除捕获组,或使它们不捕获:
text = " -45.124, 1124.325"
puts text.scan(/[+-]?\d+(?:\.\d+)?/)
Run Code Online (Sandbox Code Playgroud)
见demo,输出:
-45.124
1124.325
Run Code Online (Sandbox Code Playgroud)
见scan文档:
如果模式不包含组,则每个单独的结果由匹配的字符串组成
$&.如果模式包含组,则每个单独的结果本身就是一个数组,每个组包含一个条目.
好吧,如果你还需要像.04你可以使用的那样匹配浮子[+-]?\d*\.?\d+.看另一个演示