我有一个文本块,对于每个正则表达式匹配,我想用另一个函数的返回值替换该匹配。这个函数的参数当然是匹配的文本。
我一直在努力想出这个问题的一次性解决方案。感觉它应该很简单。
答案 0 :(得分:14)
>>> 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)(.*)$/
然后你将要替换之前和之后的文本。其余的很简单 - 只需在两个字符串之间插入函数的结果。