Мне нравится ответ Тердона.
Что касается части этого вопроса Regex , ваш шаблон недействителен.
вы должны выйти с \
все специальные символы , например:
([0-9] | [0-9] [0-9]) \ / ([0-9] | [0-9] [0-9]) \ / ([0 -9] [0-9] | [0-9] [0-9] [0-9] [0-9])
Для известных наборов данных, таких как даты, не пытайтесь изобретать велосипед, так как там буквально тысячи ответов в Интернете для сопоставления дат. Если вы хотите создать что-то более личное, используйте помощники регулярных выражений, такие как мой личный любимый regex.com , чтобы тестировать и улучшать свой шаблон по мере того, как выжелание.
Отредактировано: С экранированными символами ваш код поймает некоторые даты, но все же он не идеален, потому что он никогда не поймает 01.01.2016
, вместо этого он поймает только 01.01.20
. «Приоритет» - 2 числа за год вместо 4.
Вам нужно переключить их, чтобы найти первое совпадение с наибольшим совпадением, и если это не удастся, оно перехватит самое маленькое:
([0-9] | [0-9] [0-9]) \ / ([0-9] | [0-9] [0-9]) \ / ([0-9] [0-9] [0-9] [0-9] | [0-9] [0 -9])