2012-06-11 2 views
3

Я хотел сделать регулярное выражение, которое будет анализировать даты выражения, которые появляются периодически в документе я глядя на, в частности, дата иногда записывается как:Использование повторно с переменным списком аргументов

FEBRUARY 8 
FEBRUARY. 8 
FEBRUARY 8. 
FEBRUARY 8 

Так что мое регулярное выражение должно выглядеть

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

Кроме того, что это не работает. Как я могу написать список в своем регулярном выражении, чтобы он действовал как (JANUARY|FEBRUARY|MARCH|...etc) вместо того, чтобы на самом деле написать это или сделать цикл?

ответ

3

Вы можете использовать обычные манипуляции с строкой для создания регулярного выражения. Просто имейте в виду, что строки в вашем списке также будут интерпретироваться как регулярные выражения, если вы не используете re.escape для их дезинфекции:

r = re.compile('({}).{0,3}\d{1,2}'.format(
     '|'.join(map(re.escape, month_list)))) 
Смежные вопросы