Композитный Regexp в Python

Часто я хотел бы создавать сложные регулярные выражения из более простых. Единственный способ, которым я сейчас это знаю, – выполнить строковые операции, например:

Year = r'[12]\d{3}' Month = r'Jan|Feb|Mar' Day = r'\d{2}' HourMins = r'\d{2}:\d{2}' Date = r'%s %s, %s, %s' % (Month, Day, Year, HourMins) DateR = re.compile(Date) 

Кто-нибудь знает о другом методе или более систематическом подходе (возможно, модуле) в Python, чтобы иметь составные регулярные выражения? Я предпочел бы скомпилировать каждое регулярное выражение отдельно (например, для использования отдельных параметров компиляции), но тогда, похоже, не существует способа их компоновки !?

Вы можете использовать rxb Ping:

 year = member("1", "2") + digit*3 month = either("Jan", "Feb", "Mar") day = digit*2 hour_mins = digit*2 + ":" + digit*2 date = month + " " + day + ", " + year + ", " + hour_mins 

Затем вы можете напрямую сопоставлять полученную дату или использовать

 DateR = date.compile() 

Для этого можно использовать синтаксис форматирования Python:

 types = { "year": r'[12]\d{3}', "month": r'(Jan|Feb|Mar)', "day": r'\d{2}', "hourmins": r'\d{2}:\d{2}', } import re Date = r'%(month)s %(day)s, %(year)s, %(hourmins)s' % types DateR = re.compile(Date) 

(Обратите внимание на добавленную группировку вокруг Jan | Feb | Mar.)