Usar re con un argumento de lista de variables

Quería hacer una expresión regular que analizara las expresiones de fecha que aparecen periódicamente en un documento que estoy mirando, en particular, la fecha a veces se escribe como:

FEBRUARY 8
FEBRUARY. 8
FEBRUARY 8.
FEBRUARY    8

Entonces mi expresión regular debería verse como

re.compile(MonthList+'.?.?.?.?[0-9][0-9]?')

Excepto que esto no funciona. ¿Cómo puedo escribir una lista en mi expresión regular de modo que actúe como (JANUARY|FEBRUARY|MARCH|...etc) en lugar de escribir eso o hacer un bucle?

preguntado el 11 de junio de 12 a las 19:06

1 Respuestas

Puede usar la manipulación ordinaria de cadenas para construir la expresión regular. Solo tenga en cuenta que las cadenas en su lista también se interpretarán como expresiones regulares, a menos que use re.escape para desinfectarlos:

r = re.compile('({}).{0,3}\d{1,2}'.format(
         '|'.join(map(re.escape, month_list))))

Respondido el 12 de junio de 12 a las 14:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.