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