Создайте регулярное выражение, которое соответствует любой дате в формате yyyy-mm-dd и отдельно фиксирует год, месяц и день. Цель состоит в том, чтобы облегчить работу с этими отдельными значениями в коде, который обрабатывает соответствие. Для достижения этой цели присвойте захваченному тексту описательные имена «год», «месяц» и «день».
Создайте еще одно регулярное выражение, которое будет соответствовать «магическим» датам в формате yyyy-mm-dd. Дата считается магической, если год минус век, месяц и день месяца - одинаковые числа. Например, 2008-08-08 - это магическая дата. Захватите магическое число (08 в примере) и пометьте его как «магическое».
Вы можете считать, что все даты в тексте темы являются действительными. Регулярные выражения не обязательно должны исключать такие числа, как 9999-99-99.
Именной захват
1 | \b(?<year>\d\d\d\d)-(?<month>\d\d)-(?<day>\d\d)\b |
1 | \b(?'year'\d\d\d\d)-(?'month'\d\d)-(?'day'\d\d)\b |
1 | \b(?P<year>\d\d\d\d)-(?P<month>\d\d)-(?P<day>\d\d)\b |
Именные ссылки
1 | \b\d\d(?<magic>\d\d)-\k<magic>-\k<magic>\b |
1 | \b\d\d(?'magic'\d\d)-\k'magic'-\k'magic'\b |