这个问题在这里已有答案:
我试图在Python中使用正则表达式和re.findall()
来计算字符串中1对的分隔数。应用于字符串11110
的正则表达式应该返回2
并应用于01101
它应该返回1
。
我的代码如下:
matches = len(re.findall(r'1[\w]+1', str1))
但适用于110110
它返回1
,因为它只找到子串11011
。我希望它也能找到子串101
。我的正则表达式是错的还是re.findall()
不是我应该使用的功能?
从文档:
re.findall(pattern,string,flags = 0)
返回字符串中pattern的所有非重叠匹配,作为字符串列表。
re
模块不支持重叠,但regex
确实如此。安装regex
模块并执行以下操作:
>>> import regex
>>> regex.findall(r'1[\w]+1', '1111001', overlapped=True)
['1111001', '111001', '11001', '1001']