2016-01-07 2 views
-2

У меня есть формат даты, например 2015-12-14 10:15 и мне нужно искать строку (большие данные) в зависимости от даты, которая содержит несколько дат (например, в файле журнала).RegEx, чтобы сократить дату

Но проблема заключается в файл строка может содержать даты как 2015-12-14 10:17, 2015-12-14 10:19 (последняя цифра не кратна 5). Я должен получить данные из файла после даты 2015-12-14 10:15 (последняя цифра не кратная 5). Если я ищу в регулярном выражении 2015-12-14 10:15 i.e /2015-12-14 10: 15/, который терпит неудачу в этом случае, потому что точная дата отсутствует в строковом файле. Мне нужно получить строку как на дату, так и после прошедшей даты (т. Е. 2015-12-14 10:15).

Строка как ::

[2015-12-14 10: 04: 11232] Я рекомендую вам прочитать мою первую статью, в которой я написал для начинающих. [2015-12-14 10: 18: 22,367] в этой статье, я покажу вам, как вы можете добавить фильтр даты в шаблон HTML с помощью выражения. НАЧАТЬ [2015-12-14 10: 18: 22368] Дату форматировать или как дату объект, миллисекунды (строка или число) или различных ISO 8601

И когда я использую регулярное выражение доходя дату, которая не потому, что дата нет в этой строке. Итак, какое регулярное выражение следует использовать, чтобы я мог получить строку в прошедшей дате или после времени в дате.

Желаемая Выход:

[2015-12-14 10: 18: 22367] в этой статье тоже, я покажу вам, как вы можете добавить «дата» фильтр шаблон HTML используя выражение. НАЧАТЬ [2015-12-14 10: 18: 22,368] Дата форматировать или как дата объекта, миллисекунды (строка или число) или различных ISO 8601

Направь меня, чтобы написать регулярное выражение для этого.

+2

'Java' или' Javascript'? – Rajesh

+0

Пожалуйста, прочитайте http://meta.stackoverflow.com/questions/252868/regex-reference-and-its-fate – usr2564301

+1

Я не думаю, что для этого вам нужно использовать только регулярное выражение, одним из возможных решений для вашей проблемы является получение даты и конвертировать в datetime и сравнивать, если это после или до того времени, в котором вы нуждаетесь. Вы можете получить дату с шаблоном: \ [(\ d + - \ d + - \ d + \ s \ d +: \ d +: \ d +), \ d + \] –

ответ

2

Не существует регулярного выражения, которое найдет дату, большую, чем любое прошедшее в дате. Вы могли бы написать длинное регулярное выражение, которое обнаруживает даты, возникающие после определенной даты ISO 8601. Вы даже можете написать сценарий, который мог бы генерировать такое регулярное выражение для заданного ввода.

Я думаю, что вы хотите просто найти регулярное выражение, которое будет соответствовать любой дате ISO 8601. Возьмите это регулярное выражение, измените это регулярное выражение, чтобы включить квадратные скобки вокруг даты, и включить текст после согласования даты до следующего матча/EOF.

Затем вы будете использовать javascript для проверки всех совпадений и проверки дат, которые больше, чем дата ввода. Если все даты соответствуют ISO 8601, вам не нужно преобразовывать их в объекты даты, сравнение строк было бы достаточно.

Смежные вопросы