Я пытаюсь добавить «Смит» к каждому имени, сопоставленному с животным-духом.Добавить суффикс для каждого регулярного выражения в python?
import re
contents = '''
var cool_spirit_animals = {
'Abel': 'unicorn',
'Bob': 'lion'
};
var spirit_plants = {
'Cain': 'venus fly trap'
};
var stupid_spirit_animals = {
'Dan': 'lamprey'
};
var spirit_vampires = {
'Emily': 'Buffy',
'Fred': 'Dracula'
};
'''
my_regex = r'(spirit_animals = \{[\n\r\s]*\'\w+)(\': [^\}]*)'
print re.sub(my_regex, r'\1 Smith\2', contents)
, но мое регулярное выражение меняет имя при каждом отображении животных. Сценарий печатает:
var cool_spirit_animals = {
'Abel Smith': 'unicorn',
'Bob': 'lion'
};
var spirit_plants = {
'Cain': 'venus fly trap'
};
var stupid_spirit_animals = {
'Dan Smith': 'lamprey'
};
var spirit_vampires = {
'Emily': 'Buffy',
'Fred': 'Dracula'
};
«Боб» не изменился - изменился только «Абель». Как написать регулярное выражение, которое добавляет Smith
в все имена с духовыми животными?
Я никогда не знал, что 'sub' взял обработчик для каждого матча. Спасибо! –
Давайте жить и учиться :). На самом деле это хороший способ обхода для оператора '\ G', отсутствующего в регулярном выражении Python. –
Мне любопытно, что вы подразумеваете под этим. '\ G' фиксирует совпадение в perl, правильно? Как разрешить обработчик имитировать '\ G'? –