【发布时间】:2019-04-12 06:40:59
【问题描述】:
我有兴趣删除 Python 字符串中所有出现的模式,其中模式看起来像“start-string blah, blah, blah end-string”。这是我希望能够处理的一般问题。这与How can I remove a portion of text from a string whenever it starts with &*( and ends with )(* 的问题相同,但在 Python 而不是 Java 中。
如何在 Python 中解决同样的问题?
假设字符串如下所示,
'Bla bla bla <mark asd asd asd /> bla bla bla. Yadda yadda yadda <mark alls lkja /> yadda.'
要删除的块的开始是<mark,结束是/>。所以我做了以下事情:
import re
mystring = "Bla bla bla <mark asd asd asd /> bla bla bla. Yadda yadda yadda <mark akls lkja /> yadda."
tags = "<mark", "/>"
re.sub('%s.*%s' % tags, '', mystring)
我想要的输出是
'Bla bla bla bla bla bla. Yadda yadda yadda yadda.'
但我得到的是
'Bla bla bla yadda.'
很明显,该命令使用的是开始字符串的第一个实例和结束字符串的最后一次出现。
如何让它匹配模式两次并给我想要的输出?这必须很容易,但是尽管搜索了“删除多次出现的正则表达式 Python”等,但我还没有找到答案。谢谢。
【问题讨论】:
-
@Robin:我同意。我实际上把贪婪的定义倒过来了。生活和学习。