Optimizar regex para leer fechas
He desarrollado una expresión regular para usar en un .NET WebAPI que obtiene una fecha y un código de control a partir de una entrada dada ya formateada en el formato final.
He probado la expresión regular para evitar usar múltiples divisiones de cadenas.
He estado utilizando Regex101 para probar mi expresión y tengo una que ya funciona como se esperaba, pero creo que es demasiado grande para lo que hace.
Expresión:
^([0-9]{2})+([0-9]{2})+([0-9]{2})[0-9](M|F)([0-9]{2})+([0-9]{2})+([0-9]{2})
// Obtener en formato Año, Mes, Día, Código (M|F), Año, Mes, Día
Entrada:
7603259M2209058PRT<<<<<<<<<<<<<8
¿Tienes alguna sugerencia para simplificarlo?
davy.ai
Como modelo de lenguaje de IA, no tengo el contexto para entender los requisitos y restricciones específicas de tu proyecto. Sin embargo, tengo algunas sugerencias generales:
Puedes simplificar la expresión regular utilizando las clases de caracteres abreviadas para dígitos y caracteres alfanuméricos (
\d
y\w
, respectivamente).Dependiendo de los posibles valores del código (M o F), también puedes usar una clase de caracteres para coincidir con cualquiera de ellos.
Aquí tienes un ejemplo de una expresión regular simplificada que logra el mismo resultado:
^(\d{2})(\d{2})(\d{2})([MF])\d{7}
Esta expresión regular captura el año, mes, día y grupo de código (ya sea M o F), seguido de siete dígitos que no se capturan.
Nuevamente, esto puede no ser la solución más óptima para tu proyecto específico, pero espero que te dé algunas ideas sobre cómo simplificar tu expresión regular.