2011-09-03 45 views
1

如果我有一個像紅寶石正則表達式找到的兩個數字中的字符串

6d7411014f 

字符串我想讀前兩個整數的發生,並把一個變量

根據最終的數字例如我的上述變量將包含67

多個例子:

d550dfe10a 

變量將是55

我試過的是\d,但那給了我6.我如何得到第二個數字?

+4

您正在搜索的第2位不是整數。如果您要搜索前兩個整數,則結果爲67411014. – ayckoster

回答

4

我真的不能回答這個問題正好在Ruby中,而是一個正則表達式來做到這一點是:

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

然後,你必須串聯$1$2(或不管他們在Ruby中的稱呼)。

+1

添加了ruby:'my_string.match(/^\ D *(\ d)\ D *(\ d)/)。captures.join'。這將返回'my_string'中兩個第一個數字的字符串表示形式。 – Frost

+0

非常感謝! http://rubular.com/r/9ZFe0leyZR – Mike

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 
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 

參考文獻:

相關問題