如何在字符串前使用正则表达式整数进行匹配?

时间:2011-12-31 18:29:21

标签: ruby regex

我有一个类似“1 first - 22 second - 7 third”的字符串,我需要获取每个项目的整数值。例如,如果我想获得第三个值,他们将返回7

我尝试使用此代码,但它不起作用:

item = detail.scan(/( - )\d( second.*)/)

3 个答案:

答案 0 :(得分:1)

scan对于某些数据非常有用,但如果您想确保不仅仅收集垃圾数据,那么您可能需要更加结构化的内容。在记录分隔符“ - ”上快速拆分可确保在从项目中提取整数之前将每个项目与其他项目分开。

your_string = "1 first - 22 second - 7 third"
items = your_string.split ' - '
numbers = items.map { |item| item[/\d+/].to_i }

#=> [1, 22, 7]

答案 1 :(得分:0)

"1 first - 22 second - 7 third".split(" - ").map(&:to_i)

答案 2 :(得分:0)

使用正确的正则表达式:

str = "1 first - 22 second - 7 third"

str.scan(/\d+/).map{ |i| i.to_i } # => [1, 22, 7]

如果您需要访问特定值,请使用索引返回值:

str.scan(/\d+/).map{ |i| i.to_i }[-1] # => 7
str.scan(/\d+/).map{ |i| i.to_i }[2] # => 7
str.scan(/\d+/).map{ |i| i.to_i }.last # => 7