ruby - 带有可选匹配匹配的 Ruby 扫描,返回 nil,除了可选
问题描述
我正在运行以下命令来捕获字符串中的一系列数值(浮点数和整数):
例子:
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"]]
我在这里做错了什么?还是有更好的方法来解决这个问题?
解决方案
来自Ruby 文档:
如果模式不包含任何组,则每个单独的结果都包含匹配的字符串
$&
. 如果模式包含组,则每个单独的结果本身就是一个数组,每个组包含一个条目。
由于您的模式包含一个捕获组,因此您将获得后一种行为。使组不被捕获可以满足您的需求。
x.scan(/\d+(?:\.\d+)?/)
推荐阅读
- javascript - 使 setTimeout 无限
- javascript - 如何通过单击单元格更改颜色
- javascript - 如何清理 useEffect 函数?
- r - R while 在一天中的特定时间循环
- c - Mindstorms 的robotc **错误**:未定义的变量“sonarSensor”。假设为“短”
- sql - 不支持数据类型间隔 - Spark SQL
- javascript - 使用 JavaScript 动态生成 HTML 元素列表的最佳方法是什么?
- javascript - 在没有输入字段的情况下使用新复选框刷新 javascript 计算的总和
- c++ - MSVC2019 静态库中缺少符号名称
- android - 如何使用 ejabberd 聊天应用程序通过 API 层传递服务器