【发布时间】:2013-07-11 10:38:21
【问题描述】:
我想做的是在给定的文本中进行特定的替换。例如,'' 应更改为 ']',等等。它类似于此处给出的解决方案: How can I do multiple substitutions using regex in python?,这是
import re
def multiple_replace(dict, text):
# Create a regular expression from the dictionary keys
regex = re.compile("(%s)" % "|".join(map(re.escape, dict.keys())))
# For each match, look-up corresponding value in dictionary
return regex.sub(lambda mo: dict[mo.string[mo.start():mo.end()]], text)
现在,问题是我还想替换正则表达式匹配的模式。例如,我想将 'fo.+' 替换为 'foo' 和 'ba[rz]*' 替换为 'bar'。
删除地图(代码中的 re.escape 有帮助,以便正则表达式实际匹配,但随后我收到关键错误,因为例如,'barzzzzzz' 将是匹配项,并且我想替换一些东西,但是'barzzzzzz' 不是字典中的键,文字字符串 'ba[rz]*' 是。如何修改此函数以使其工作?
(在不相关的注释中,这些“foo”和“bar”是从哪里来的?)
【问题讨论】:
-
替换文字很容易保持直接,但添加正则表达式作为匹配模式肯定会增加一些潜在的歧义(尤其是因为您可能需要跟踪其中的几十个)。如果您有可能重叠的正则表达式,请注意按预期顺序测试和替换它们。
标签: python regex substitution