2012-04-17 8 views
-1

文字列内で最初に数字が出現するのを探しています。私は最初の数字、むしろ全体の最初の数字を探していません。したがって、たとえば、最初の数:1235alkj9342klja9034の最初の番号は、私はD \使用することを試みてきたが、私は複数を含めることを拡張する方法がわからないよ1235ルビー正規表現で完全な数字を見つける方法

ありながらw134fklj342は、134です数字(数字の長さを指定しないで)。

+1

が正しいです。 Regexpが何を提供しているかについては、[Regexp docs](http://www.ruby-doc.org/core-1.9.3/Regexp.html)を参照してください。 –

答えて

3

私が思うに、あなたがこの正規表現

\d+ 

を探している、「プラス」「1つ以上」を意味します。この正規表現は文字列内のすべての数字と一致するので、最初のものを選びます。

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

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

デモ:http://rubular.com/r/YE8kPE2SyW

+1

正解ですが、もっと単純に:s [/ \ d + /] – pguardiario

+0

@pguardiario:くそー! :) –

0

正規表現を理解する最も簡単な方法は、eachbitを考えることである1つの文字です。例:\dまたは[1234567890]または[0-9]は1桁に一致します。 *+

  • * 0回以上
  • +はそれを1回以上

と一致します文字と一致します:あなたは2つの基本的なオプションがあり、この1つの文字が拡大すること

Sergioのように、多くの数字に一致させるには\d+を使うべきだと言った。一般的な正規表現のための

優れたチュートリアル:セルジオ・tulentsev @http://www.regular-expressions.info/tutorial.html

関連する問題