这个Python正则表达式有什么问题?

时间:2018-07-31 16:50:02

标签: python regex

给出一个字符串,我想找到所有包含两个或三个“ 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'和','应该同时出现。但是,我不知道该怎么做。

1 个答案:

答案 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,"