Параметры экстракта Ruby Regex - PullRequest
2 голосов
/ 29 ноября 2011

У меня есть дата в этом формате

11/28/2011 2:39:00 PM

Мне кажется, я не могу извлечь из каждого из этих форматов способ извлечения (например, вынуть день, месяц, год, час, минуту, секунду, AM / PM) отдельно для работы с ними.Здесь мне нужна помощь, поэтому я могу использовать это, чтобы переставить время вручную и работать с ним так, как я хочу.Я не могу найти решение для этого.(но я уверен, что мне нужно использовать регулярные выражения)

Ответы [ 6 ]

3 голосов
/ 29 ноября 2011
require 'date'
str = '11/28/2011 2:39:00 PM'
date = DateTime.strptime(str, '%m/%d/%Y %I:%M:%S %p')
puts date.year # etc
1 голос
/ 29 ноября 2011

Хотя я уверен, что регулярное выражение не лучший способ сделать это, вот некоторые регулярные выражения, которые я протестировал на rubular.com !

Месяц:

(\d){2}(?=\/\d\d\/) 

день:

(\d){2}(?=\/\d\d\d\d)

Год выпуска:

(\d){4}(?=\s)

час:

(\d){1,2}(?=:\d\d:\d\d\s)

Минута:

(\d){2}(?=:\d\d\s)

Второе:

(\d){2}(?=\s\w\w\b)

AM / PM:

\b[PA]M\b
1 голос
/ 29 ноября 2011

Я нашел, что проще всего использовать камень Chronic для такого анализа. Хроник обрабатывает их намного лучше, чем материал по умолчанию DateTime:

gem install chronic

А потом:

require 'chronic'
date = Chronic.parse(my_date)
puts "year, month, day, hour: #{date.year}, #{date.month}, #{date.day}, #{date.hour}"

1007 * Etc. *

0 голосов
/ 29 ноября 2011

Вы можете использовать это наивное регулярное выражение:

/(\d+)/(\d+)/(\d+)\s(\d+):(\d+):(\d+)\s(\w+)/

Если ваш формат никогда не меняется, никогда, вообще ...

0 голосов
/ 29 ноября 2011

Вы можете использовать DateTime.strptime http://ruby -doc.org / stdlib-1.9.3 / libdoc / date / rdoc / DateTime.html # method-c-strptime для создания объекта DateTime и используйте это.

0 голосов
/ 29 ноября 2011

Вам не нужно анализировать его с помощью регулярного выражения, вы можете просто преобразовать его в DateTime:

require 'date'
my_time = DateTime.parse('11/28/2011 2:39:00 PM')
puts my_time.day  # and so on
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...