2010-02-17 4 views
1

Я пытаюсь выяснить, как извлечь даты из неструктурированного текста с помощью Ruby.Дата составления из текста с использованием Ruby

Например, я хотел бы проанализировать дату из этой строки «Приложения, запущенные после 12:00 A.M. Midnight (EST) 1 февраля 2010 г. не будут рассмотрены».

Любые предложения?

+0

Будет ли эта строка всегда будет в таком формате? Будет ли строка даты всегда в этом формате? –

+0

Строка не будет. Строка даты будет в этом формате. – user274862

ответ

0

Предполагая, что вы просто хотите даты и не DateTimes:

require 'date' 
string = "Applications started after 12:00 A.M. Midnight (EST) February 1, 2010 will not be considered." 
r = /(January|February|March|April|May|June|July|August|September|October|November|December) (\d+{1,2}), (\d{4})/ 
if string[r] 
    date =Date.parse(string[r]) 
    puts date 
end 
7

Попробуйте Хронический (http://chronic.rubyforge.org/), он может проанализировать, что в противном случае вам придется использовать Date.strptime.

0

Также вы можете попробовать gem, которые могут помочь найти дату в строке.

Exapmle:

input = 'circa 1960 and full date 07 Jun 1941' 
dates_from_string = DatesFromString.new 
dates_from_string.get_structure(input) 

#=> return 
# [{:type=>:year, :value=>"1960", :distance=>4, :key_words=>[]}, 
# {:type=>:day, :value=>"07", :distance=>1, :key_words=>[]}, 
# {:type=>:month, :value=>"06", :distance=>1, :key_words=>[]}, 
# {:type=>:year, :value=>"1941", :distance=>0, :key_words=>[]}]