我想在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
但我的实际文字仍然相同。
我可以使用正则表达式修改文本本身吗?
答案 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