如何替换一行中出现的所有匹配模式?

时间:2017-06-08 15:09:29

标签: python regex

假设我有一行:

"[foo] and (foo) along with foofrancis.foo = foo"

匹配模式"foo"始终与非a-zA-Z个字符连续,但可能在一行中出现任意次数。

当foo与a-z或A-Z字符不连续并输出换行符时,我想用"foo"替换所有出现的"bar"

foobar都是我传入的变量。排序如下:

 foo = "Hello"
 bar = "Goodbye"
 line = "[Hello] and (Hello) along with Hellofrancis.Hello = Hello"
 newline = re.sub(<Unsure what goes here>,line)
 print newline

输出:

[Goodbye] and (Goodbye) along with Hellofrancis.Goodbye = Goodbye

我不确定如何配置re.sub

1 个答案:

答案 0 :(得分:1)

import re

foo = re.escape("Hello")
bar = re.escape("Goodbye")
line = "[Hello] and (Hello) along with Hellofrancis.Hello = Hello"
newline = re.sub("\\b" + foo + "\\b", bar, line)
print (newline)

那应该做你想要的。 re.sub需要3个参数。你要替换什么,什么和文本。 \ b是一个单词边界。请注意,Hellofrancis根据您的要求不会改变。我也逃脱了你的foo和bar,所以如果进来的数据有正则表达式字符就像一段时间它会让你的输出搞得一团糟。