2014-01-31 2 views
0

У меня есть список файлов с отметкой времени в имени файла, названный в виде 6 часов:Regex для выбора файлов в интервалах

file_year-month-date-hour-minute.something.gz. 

Например есть файлы с именем

file_2013-06-17-00-05.something.gz 
file_2013-06-17-00-10.something.gz 

Мне нужно выбирать файлы через 6-часовые интервалы с регулярным выражением. Выбор «file_year-month-date *» дает мне ежедневные файлы, но не уверен, как отфильтровать до 6-часовых кусков.

+8

Честно говоря, это не кажется, что регулярное выражение является правильным механизмом использовать для этого. Почему бы просто не проанализировать имена файлов в индексный список временных меток? Затем вы можете группировать, фильтровать и запрашивать с большой гибкостью. – NathanAldenSr

+2

regex для * формат * проверка, нет * программный * проверка. – tenub

+0

regex можно, конечно, использовать для проверки и извлечения $ 1, $ 2 и т. Д. _fields_ из строки, но может быть проще «разбить» имена на _,. И - особенно, если вам нужно выполнить дальнейшую обработку и сравнение значений и/или генерации метки времени Unix. –

ответ

2

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

file_\d{4}-\d{2}-\d{2}-(?:00|06|12|18|24)-(?:[0-5][0-9])\..+?\.gz 
Смежные вопросы