给出一个字符串,我想找到所有包含两个或三个“ 4”的子字符串。
例如,给定'1,4,3,2,1,1,1,4,4,3,2,1,4,4,3,2,1,4,4,4,3,2, ' 我想获取['4,4,','4,4,','4,4,4']。
str_ = '1,4,4,3,2,1,1,4,4,3,2,1,4,4,3,2,1,4,4,3,2,'
m = re.findall(r"(4,){2,3}", str_)
我得到的是: ['4,','4,','4,','4,']
怎么了?
在我看来,用括号括起来的'4'被解释为分组,但没有告诉Python'4'和','应该同时出现。但是,我不知道该怎么做。
答案 0 :(得分:1)
只需使用非捕获组(this regex here的在线版本):
import re
s = '1,4,3,2,1,1,4,4,3,2,1,4,4,3,2,1,4,4,4,3,2,'
print(re.findall(r'(?:4,?){2,3}', s))
打印:
['4,4,', '4,4,', '4,4,4,']
编辑:
编辑的正则表达式可捕获2或3个元素"4,"