Python 如何使用正则表达式修改字符串的内容(就像string.Replace一样)
我想在python中使用正则表达式替换字符串的内容 我尝试了以下代码: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中,字符串是不可变的。所以,你不能改变它们
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提示:如有疑问,请查看手册。你应该找到一个有效的例子。