2

私はこのような文字列ルビーを持っています。

mystring = "some string value with a date 02/02/2002"

データベースに保存するために日付だけを抽出したいと思います。ある種の正規表現と、パターンを検索して文字列から取得する方法が必要になると確信しています。

ここで何をする必要があるのか​​ よくわかりません。

その日付形式に一致させることができるはずのこの正規表現をオンラインで見つけました。

reg = Regexp.new("^\d{1,2}\/\d{1,2}\/\d{4}$")

それを使用して、文字列から上記の日付を解析するにはどうすればよいですか?

4

3 に答える 3

15

ちょっとクール:

1.9.2-p290 :005 > "some string value with a date 02/02/2002".to_date
=> Sat, 02 Feb 2002
1.9.2-p290 :013 > "some another string 05/07/2012 with stuff after".to_date
=> Thu, 05 Jul 2012 

そして、そのクラスは Date であるため、必要なことは何でも行います。

(正規表現ではないことはわかっていますが、それでもクールだと思います;P)

于 2012-07-05T21:11:16.630 に答える
11

How about this?

s = "some string value with a date 02/02/2002"
regex = /\d{1,2}\/\d{1,2}\/\d{4}/

s[regex] # => "02/02/2002"

Note that you don't need the ^ and $ in your regex as you won't be matching the string in its entirety.

于 2012-07-05T21:07:07.123 に答える
1

https://rubygems.org/gems/dates_from_stringを試すことができます:

text = "1988-1990 and 2000 and one more date 28.04.2015" 
dates_from_string = DatesFromString.new()
dates_from_string.get_structure(text)

#=> returns
#  [{:type=>:year, :value=>"1988", :distance=>0, :key_words=>[]},
#  {:type=>:year, :value=>"1990", :distance=>2, :key_words=>[]},
#  {:type=>:year, :value=>"2000", :distance=>5, :key_words=>[]},
#  {:type=>:year, :value=>"2015", :distance=>0, :key_words=>[]},
#  {:type=>:month, :value=>"04", :distance=>0, :key_words=>[]},
#  {:type=>:day, :value=>"28", :distance=>0, :key_words=>[]}]
于 2015-04-30T09:26:07.440 に答える