2012-04-17 27 views
-1

我正在尋找字符串中第一個整數的數字。我不是在尋找第一個數字,而是整個第一個數字。因此,例如,在第一個數字:w134fklj342是134,而在1235alkj9342klja9034的第一個數字是1235如何用ruby正則表達式找到整個完整數字

我試圖使用\ d,但我不知道該如何展開,包括多個數字(不指定數字的長度)。

+1

@塞爾吉奧 - tulentsev是正確的。但是您應該閱讀[Regexp文檔](http://www.ruby-doc.org/core-1.9.3/Regexp.html)以瞭解有關正則表達式提供的更多信息。 – 2012-04-17 01:32:59

回答

3

我想,你正在尋找這個表達式

\d+ 

「加」是指「一個或多個」。這個正則表達式將匹配一個字符串中的所有數字,所以選擇第一個。

strings = ['w134fklj342', '1235alkj9342klja9034'] 

strings.each do |s| 
    puts s[/\d+/] 
end 
# >> 134 
# >> 1235 

演示:http://rubular.com/r/YE8kPE2SyW

+1

正確,但更簡單只是:s [/ \ d + /] – pguardiario 2012-04-17 08:20:26

+0

@pguardiario:該死! :) – 2012-04-17 09:16:38

0

瞭解正則表達式的最簡單的方法是考慮eachbit的是一個字符;例如:\d[1234567890][0-9]將匹配一個數字。

爲了擴大這一特性,你有2點基本的選擇:*+

  • *將匹配字符0次或多次
  • +將匹配它一次或多次

像塞爾吉奧說,你應該使用\d+來匹配很多數字。一般的正則表達式

優秀教程:http://www.regular-expressions.info/tutorial.html