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

Python 如何使用正则表达式修改字符串的内容(就像string.Replace一样),python,regex,Python,Regex,我想在python中使用正则表达式替换字符串的内容 我尝试了以下代码: regex=r"(?:ab*)\w+" text ="absd 2013 abpq ab 123absd" pattern=re.compile(regex) print pattern.sub("dummy",text) 我得到如下输出: dummy 2013 dummy dummy 123dummy 但我的实际文本仍然是一样的 我可以用正则表达式修改文本本身吗?在Python中,字符串是不可变的。所以,你不能改变它们

我想在python中使用正则表达式替换字符串的内容

我尝试了以下代码:

regex=r"(?:ab*)\w+"
text ="absd 2013 abpq ab 123absd"
pattern=re.compile(regex)
print pattern.sub("dummy",text)
我得到如下输出:

dummy 2013 dummy dummy 123dummy
但我的实际文本仍然是一样的


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

在Python中,字符串是不可变的。所以,你不能改变它们。您可以做的是,将对string对象的旧引用替换为新的string对象,如下所示

text = pattern.sub("dummy", text)
另外,如果您试图替换所有以
ab
开头的字符串,则可能需要使用此正则表达式

regex = r"ab.*?\b"

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

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

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

此“返回字符串”实际上不是原始替换字符串。它是一个包含替换字符串的新字符串。因此,需要将其分配回原始字符串

现在,您将看到预期修改的字符串:

print test
dummy 2013 dummy dummy 123dummy

将文本变量重新分配给具有更改的副本…即text=newvaluePro提示:如有疑问,请查看手册。你应该找到一个有效的例子。