Python, использующий результат функции для подстановки регулярных выражений - PullRequest
5 голосов
/ 14 февраля 2009

У меня есть блок текста, и для каждого совпадения с регулярным выражением я хочу заменить это совпадение возвращаемым значением из другой функции. Аргументом для этой функции является, конечно, сопоставленный текст.

У меня возникли проблемы при попытке найти решение этой проблемы за один проход. Такое ощущение, что все должно быть довольно просто.

Ответы [ 2 ]

14 голосов
/ 14 февраля 2009

справа от документации :

>>> def dashrepl(matchobj):
...     if matchobj.group(0) == '-': return ' '
...     else: return '-'
>>> re.sub('-{1,2}', dashrepl, 'pro----gram-files')
'pro--gram files'
0 голосов
/ 14 февраля 2009

Python-agnostic: сопоставлять все до и после текста для замены.

/^(.*?)(your regexp to match)(.*)$/

Тогда у вас есть следующий до и после текста, который вы собираетесь заменить. Остальное легко - просто вставьте результат вашей функции между двумя строками.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...