рельсы модель имеет много

Если у вас уже есть заменяющая строка (шаблон), вы не можете быть заинтересованы в ее замене с многословием 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-адресов, где вы просто хотите, чтобы полная замена была заглавной или нет.

33
задан Alexander Forbes-Reed 13 September 2013 в 17:20
поделиться