0

给定一个字符串,我想找到由两个或三个“4”组成的所有子字符串。

例如,给定 '1,4,3,2,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”和“,”应该一起出现。但是,我不知道该怎么做。

4

1 回答 1

1

只需使用非捕获组(此正则表达式的在线版本):

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

于 2018-07-31T16:58:50.520 回答