使用Ruby和Regex查找字符串中的两个数字

使用Ruby和Regex查找字符串中的两个数字,ruby,regex,Ruby,Regex,我有一个字符串如下所示: 结果1-10/20 在Ruby中使用正则表达式如何找到该句子的数字10和20 比如: first_number, second_number = compute_regex(my_string)... 谢谢试试这个: a = "Results 1 - 10 of 20" first_number, second_number = a.match(/\w+ (\d) \- (\d+) of (\d+)/)[2..3].map(&:to_i) 由于返回的rege

我有一个字符串如下所示:

结果1-10/20

在Ruby中使用正则表达式如何找到该句子的数字10和20

比如:

first_number, second_number = compute_regex(my_string)...
谢谢

试试这个:

a = "Results 1 - 10 of 20"
first_number, second_number = a.match(/\w+ (\d) \- (\d+) of (\d+)/)[2..3].map(&:to_i)
由于返回的regexp
MatchData
对象是字符串,因此有必要使用
map
块。

尝试以下操作:

a = "Results 1 - 10 of 20"
first_number, second_number = a.match(/\w+ (\d) \- (\d+) of (\d+)/)[2..3].map(&:to_i)
由于返回的regexp
MatchData
对象是字符串,因此必须使用
map

first, second = *source.scan(/\d+/)[-2,2]
解释

\d+
匹配任何数字

scan
source

[-2,2]
返回数组中的最后两个数字:从索引
-2
开始,从结尾返回下一个
2

*
splat操作符将这两个匹配项解压到变量
第一个
第二个
注意:此操作符不是必需的,您可以删除它,我喜欢)

像这样:

first, second = *source.scan(/\d+/)[-2,2]
解释

\d+
匹配任何数字

scan
source

[-2,2]
返回数组中的最后两个数字:从索引
-2
开始,从结尾返回下一个
2


*
splat操作符将这两个匹配项解压到变量
第一个
第二个
注意:此操作符不是必需的,您可以删除它,我喜欢)

splat不是严格必需的,是吗?splat不是严格必需的,是吗?