ruby正则表达式在字符串中找到前两个数字

时间:2011-09-03 23:20:16

标签: ruby regex

如果我有像

这样的字符串
6d7411014f

我想读取前两个整数的出现,并将最终的数字放在一个变量

根据以上示例,我的变量将包含67

更多例子:

d550dfe10a

变量为55

我尝试的是\d,但这给了我6.如何获得第二个号码?

3 个答案:

答案 0 :(得分:6)

我会使用scan来做这类事情:

n = my_string.scan(/\d/)[0,2].join.to_i

如果没有两个数字,你必须决定你想做什么。

例如:

>> '6d7411014f'.scan(/\d/)[0,2].join.to_i
=> 67

>> 'd550dfe10a'.scan(/\d/)[0,2].join.to_i
=> 55

>> 'pancakes'.scan(/\d/)[0,2].join.to_i
=> 0

>> '6 pancakes'.scan(/\d/)[0,2].join.to_i
=> 6

参考文献:

答案 1 :(得分:5)

我真的无法在Ruby中完全回答这个问题,但正则表达式是:

/^\D*(\d)\D*(\d)/

然后你必须连接$1$2(或者在Ruby中调用的任何东西)。

答案 2 :(得分:0)

建立sidyll的答案,

string = '6d7411014f'
matched_vals = string.match(/^\D*(\d)\D*(\d)/)
extracted_val = matched_vals[1].to_i * 10 + matched_vals[2].to_i