У меня есть строка, содержащая дату, которая имеет много возможностей форматирования.Мое регулярное выражение, чтобы соответствовать этому, становится смешным и длинным.Я надеюсь выучить более краткое выражение.Вот различные форматы.Я хотел бы получить каждую дату в качестве собственного совпадения:
Sat Jul 16, 2011
Sat Jul 16, 2011 6pm to 8pm
Sat Jul 16, 2011 6pm to 8:30pm
Sat Jul 16, 2011 6:30pm to 8pm
Sat Jul 16, 2011 6:30pm to 8:30pm
Sat Jul 16, 2011 to Sun Jul 17, 2011
Sat Jul 16, 2011 6pm to Sun Jul 17, 2011 8pm
Sat Jul 16, 2011 6:30pm to Sun Jul 17, 2011 8pm
Sat Jul 16, 2011 6pm to Sun Jul 17, 2011 8:30pm
Sat Jul 16, 2011 6:30pm to Sun Jul 17, 2011 8:30pm
Прежде чем я пришел сюда, чтобы спросить, я дошел до этой точки:
([A-Z]{1}[a-z]{2} [A-Z]{1}[a-z]{2} [0-9]{1,2}, [0-4]{4} [0-9]{1,2}[ap]{1}m)( to ([A-Z]{1}[a-z]{2} [A-Z]{1}[a-z]{2} [0-9]{1,2}, [0-4]{4} [0-9]{1,2}[ap]{1}m))?
Что бы вернутьпервая дата и вторая, если она существует, но только для этого формата: Sat Jul 16, 2011 6pm to Sun Jul 17, 2011 8pm
.Это стало абсурдом.
Редактировать:
Кто-то предложил Я проверяю часть даты «до» и запускаю регулярное выражение с каждой стороны, вместо того, чтобы пытатьсяучитывать все случаи сразу.Все еще ищу более краткое решение для каждой его стороны, но это очень поможет.