Регулярные выражения Python для извлечения даты

У меня есть строки, которые выглядят так:

{server}_{date:YYYYMMDD}{int:######}
{server}_{date:MON DAY YYYY}{int:######}

... плюс другие в разных форматах даты. Кроме того, может быть любое количество блоков {}, и они могут появляться в любом порядке.

Я пытаюсь получить только часть «даты» между фигурными скобками в Python 3.2. Итак, для первой строки я хочу получить просто «{date: YYYYMMDD}», а для второй строки я хочу просто «{date: MON DAY YYYY}».Единственные символы, которые мне нужны внутри блока «дата», - это альфа и пробел.

Мой шаблон регулярного выражения:

\{date:(\w|\s)*\}

Я тестировал это на этом построителе регулярных выражений , но он не соответствует ожидаемому . Это мой вывод на Python:

>>> import re
>>> re.findall('\{date:(\w|\s)*\}', '{server}_{date:YYYYMMDD}{date:MONDAYYYYY}{int:######}')
['D', 'Y']
>>> re.findall('\{date:(\w|\s)*\}', '{server}_{date:MON DAY YYYY}{int:######}')
['Y']

Кто-нибудь, пожалуйста, укажите, что не так с моим шаблоном?

5
задан agf 29 September 2011 в 16:20
поделиться