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 

然后用它做任何你想做的事情,因为它的类是日期。

(我知道这不是正则表达式,但我仍然认为它很酷;P)

于 2012-07-05T21:11:16.630 回答
11

这个怎么样?

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

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

请注意,您不需要^and$在您的正则表达式中,因为您不会完全匹配字符串。

于 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 回答