我在python中有以下代码。我希望它能删除开头的"ab",因为。是一个不贪婪的人。但是为什么要一直移到最后一个b呢?
In [15]: b="abcabcabc"
In [16]: re.sub(".*?b","",b)
Out[16]: 'c'
这是因为默认情况下,re.sub()
将搜索并替换所有出现的
>>> import re
>>> b="abcabcabc"
>>> re.sub(".*?b","",b)
'c'
>>> re.sub("^.*?b","",b)
'cabcabc'
>>> re.sub(".*?b","",b, count=1)
'cabcabc'
>>> re.sub(".*?b","",b, count=2)
'cabc'
从医生
re.sub(pattern, repl, string, count=0, flags=0)
python文档说:
可选参数count是要替换的模式出现的最大次数;Count必须是一个非负整数。如果省略或为零,将替换所有出现的
因此,您可以用count=1
调用re.sub
以获得所需的结果:
re.sub(".*?b", "", b, 1)
#output
'cabcabc'