Если у вас уже есть заменяющая строка (шаблон), вы не можете быть заинтересованы в ее замене с многословием m.group(1)+...+m.group(2)+...+m.group(3)
... Иногда приятно иметь аккуратную небольшую строку.
Вы можете использовать функцию MatchObject
expand () для оценки шаблона для совпадения таким же образом, как sub () , что позволяет сохранить как можно больше ваш оригинальный шаблон, насколько это возможно. Вы можете использовать upper
в соответствующих фрагментах.
re.sub(r'foo([a-z]+)bar', lambda m: 'GOO' + m.expand('\1GAR').upper())
Хотя это не было бы особенно полезно в приведенном выше примере, и, хотя оно не помогает при сложных обстоятельствах, оно может быть более удобным для более длинных выражения с большим количеством захваченных групп, такие как регулярное выражение для цензурирования MAC-адресов, где вы просто хотите, чтобы полная замена была заглавной или нет.