As expectativas legais e culturais para a representação de datas e horários variam entre os países, sendo importante estar ciente das formas de datas totalmente numéricas utilizadas em um país específico para saber qual data é pretendida.
Os escritores tradicionalmente escrevem datas abreviadas de acordo com o costume local, criando equivalentes totalmente numéricos para os formatos dia-mês, como "29 de março de 2024" (29/03/24, 29/03/2024, 29/3/2024, 29-03-2024, 29.03.2024, etc), e formatos mês-dia, como "29 de março de 2024" (03/29/24 ou 03/29/2024). Isso pode resultar em datas que são impossíveis de entender corretamente sem conhecer o contexto. Por exemplo, dependendo do estilo de ordenação, a data abreviada "01/11/06" pode ser interpretada como "1 de novembro de 2006" para DMY, "11 de janeiro de 2006" para MDY e "6 de novembro de 2001" para YMD.
Dentre os diferentes formatos para datas está o formato DD/MM/YYYY, majoritariamente utilizado no Brasil, onde o dia e o mês são representados por exatamente dois dígitos decimais e o ano por quatro dígitos. Mesmo impondo restrições aos possíveis valores como, por exemplo, , e , ainda é possível representar datas inválidas. Por exemplo, 31/06/2023 e 29/02/2022 são datas inválidas, pois junho tem apenas 30 dias e 2022 não foi um ano bissexto, respectivamente.
Sua missão é dado um arquivo que pode conter datas no formato
apresentado, escreva uma expressão regular (RegEx
) em um arquivo
.grepe a qual identifique quais delas são, de
fato, datas válidas.
O arquivo .grepe será o equivalente a execução do seguinte comando no terminal em ambiente Unix:
$ grep -o -E 'regex' input
No qual regex é a expressão regular que resolve o problema e input é o arquivo com os casos a serem testados. Portanto, o arquivo deve conter única e exclusivamente apenas uma linha, a qual deve apresentar a expressão regular regex para o problema proposto.
A entrada é composta por um único caso de teste, contendo () linhas. As linhas podem () possíveis datas a serem analisadas.
Seu programa deverá imprimir as () datas corretas de cada caso de teste.
14/06/2023 31/06/2023
29/02/2000
29/02/2022
12/34/5678
abcd 12345 ? FIM
14/06/2023
29/02/2000
Author: author: Edson Alves, mojificado por Bruno Ribeiro