我正在运行以下命令来捕获字符串中的一系列数值(浮点数和整数):
示例:
x = "This is the 1st string with 2 quotes and took 3.4 seconds to write."
运行
x.scan(/\d+(\.\d+)?/)
返回
[[nil], [nil], [".4"]]
但我正在寻找
[["1"], ["2"], ["3.4"]]
我在这里做错了什么?还是有更好的方法来解决这个问题?
答案 0 :(得分:1)
来自Ruby docs:
如果模式不包含任何组,则每个结果都包含 匹配的字符串
$&
。如果模式包含组,则每个人 结果本身就是一个数组,每个组包含一个条目。
由于您的模式包含捕获组,因此您将获得后者的行为。使群组不被捕获会给您您想要的东西。
x.scan(/\d+(?:\.\d+)?/)