2015-09-13 87 views

回答

1

the documentation(重点煤矿):

返回的数目非重叠的范围出现串 的[开始,结束]。可选参数开始结束被解释为切片符号。

1

字符串是“BABAB”。通过使用count()它将返回如下所示的非重叠匹配的数目:“BAB | AB”,因此它只会计数一次。尝试使用字符串“BABBAB”,您将得到2个数字。例如:

>>> x = "BABAB" 
>>> x.count("BAB") 
1 
>>> x = "BABBAB" 
>>> x.count("BAB") 
2 
2

‍‍str.count仅返回number of non-overlapping matches,如果你想获得所有比赛的数量包括重叠的比赛,你可以使用正则表达式与re.findall

>>> re.findall(r'(?=(BAB))',"BABAB") 
['BAB', 'BAB'] 

而对于计算匹配的数量,您可以使用内的发电机表达sum功能和用途re.finditer代替re.findall其更存储器的使用的术语优化:

>>> sum(1 for _ in re.finditer(r'(?=(BAB))',"BABAB")) 
2 

(?=(BAB))为符合其随后BAB的地方,一个positive look-ahead

相关问题