Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个看起来像这样的字符串:
结果 1 - 10 的 20
我如何在 Ruby 中使用正则表达式找到该句子的数字 10 和 20?
就像是:
first_number, second_number = compute_regex(my_string)...
谢谢
像这样:
first, second = *source.scan(/\d+/)[-2,2]
解释
\d+匹配任何数字
\d+
scan查找其正则表达式参数的所有匹配项source
scan
source
[-2,2]返回数组中的最后两个数字:-2从末尾的索引开始,返回下一个2
[-2,2]
-2
2
*splat 运算符将这两个匹配项解压缩到变量中first,并且second(注意:此运算符不是必需的,您可以删除它,我喜欢这个 概念)
*
first
second
试试这个:
a = "Results 1 - 10 of 20" first_number, second_number = a.match(/\w+ (\d) \- (\d+) of (\d+)/)[2..3].map(&:to_i)
这map部分是必要的,因为返回的正则表达式MatchData对象是字符串。
map
MatchData