假设我有一行:
"[foo] and (foo) along with foofrancis.foo = foo"
匹配模式"foo"
始终与非a-zA-Z
个字符连续,但可能在一行中出现任意次数。
当foo与a-z或A-Z字符不连续并输出换行符时,我想用"foo"
替换所有出现的"bar"
。
foo
和bar
都是我传入的变量。排序如下:
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
答案 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,所以如果进来的数据有正则表达式字符就像一段时间它会让你的输出搞得一团糟。