Python使用正则表达式替换函数的结果

时间:2009-02-13 21:38:30

标签: python regex

我有一个文本块,对于每个正则表达式匹配,我想用另一个函数的返回值替换该匹配。这个函数的参数当然是匹配的文本。

我一直在努力想出这个问题的一次性解决方案。感觉它应该很简单。

2 个答案:

答案 0 :(得分:14)

the documentation开始:

>>> def dashrepl(matchobj):
...     if matchobj.group(0) == '-': return ' '
...     else: return '-'
>>> re.sub('-{1,2}', dashrepl, 'pro----gram-files')
'pro--gram files'

答案 1 :(得分:0)

Python-agnostic:匹配文本之前和之后的所有内容。

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

然后你将要替换之前和之后的文本。其余的很简单 - 只需在两个字符串之间插入函数的结果。