2014-11-11 4 views
1

я следующий формат строки даты, взятая из большого набора данных:Регулярное совпадение между указанными датами?

Wed Oct 05 19:26:09 BST 2014 

мне нужно извлечь даты между 15th October 09:00 и 23rd October 11:00

я в настоящее время это регулярное выражение: (Oct\W\d\d\W\d\d\W\d\d\W\d\d), который соответствует: Oct 05 19:26:09

Как я могу изменить его в соответствии с датами и диапазонами времени, которые я указал?

+0

Я могу дать вам регулярное выражение .. но, как @Maciej сказал .. это не будет выглядеть красиво .. – SERPRO

ответ

2

Ну как @Maciej Baranowski сказал .. вы не должны делать это с помощью RegExp. Но на всякий случай вы должны, и нет другой альтернативы. Вот регулярное выражение для этого условия:

EDIT: Новый ответ на основе комментариев к OP. Только совпадают даты в период с 15 по 23 октября и в период между 9:00:00 и 11:00:00

#Oct\W(?:1[5-9]|2[0-3])\W(?:(?:0?9|10):\d{2}:\d{2}|11:00:00)# 

Вы можете видеть, что это работает here

+0

Thats great, но время должно быть между 09:00 и 11:00 – adebesin

+0

Я думал, вы имели в виду с 15 октября 09:00 до 23 октября 11:00 или это каждый день в этот период между этими часами? Если вы видите ссылку, которую я разместил с примером, вы увидите, что результаты находятся между этими датами. – SERPRO

+0

да между этими датами отлично работает. но также между 09:00 и 11:00 – adebesin

2

Я не думаю, что это хороший подход, чтобы попытаться найти ряд дат с одним регулярным выражением - это, безусловно, будет сложно и сложно изменить и повторно использовать в будущем. Не было бы лучше извлечь число дней в месяц на переменную на языке программирования, который вы используете? Тогда сравнение с сравнениями будет тривиальным. Конечно, это зависит от контекста вашей проблемы.