Your regex only contains a single pair of parentheses (one capturing group), so you only get one group in your match. If you use a repetition operator on a capturing group (+
or *
), the group gets “overwritten” each time the group is repeated, meaning that only the last match is captured.
In your example here, you’re probably better off using .split()
, in combination with a regex:
lun_q = 'Lun:\s*(\d+(?:\s+\d+)*)'
s=""'Lun: 0 1 2 3 295 296 297 298'''
r = re.search(lun_q, s)
if r:
luns = r.group(1).split()
# optionally, also convert luns from strings to integers
luns = [int(lun) for lun in luns]