如何使用正则表达式修改字符串的内容(就像String.Replace一样)

时间:2014-04-21 09:15:01

标签: python regex

我想在python中使用regex替换字符串的内容。

我尝试过以下代码:

regex=r"(?:ab*)\w+"
text ="absd 2013 abpq ab 123absd"
pattern=re.compile(regex)
print pattern.sub("dummy",text)

我得到了这样的输出:

dummy 2013 dummy dummy 123dummy

但我的实际文字仍然相同。

我可以使用正则表达式修改文本本身吗?

2 个答案:

答案 0 :(得分:1)

在Python中,字符串是不可变的。所以,你无法改变它们。你可以做的是,用新的字符串对象替换对字符串对象的旧引用,比如这个

text = pattern.sub("dummy", text)

另外,如果您尝试替换以ab开头的所有字符串,那么您可能希望使用此RegEx,

regex = r"ab.*?\b"

答案 1 :(得分:1)

您需要将结果存储回文本中,如下所示:

text = pattern.sub("dummy",text)

sub

  

返回通过替换最左边的非重叠获得的字符串   替换repl在字符串中出现模式

这"返回字符串"实际上并不是原来的替换字符串。它是 new 字符串,其中包含已替换的字符串。因此,您需要将其分配回原始字符串

现在您将获得预期的修改后的字符串:

print test
dummy 2013 dummy dummy 123dummy