Вы можете использовать положительный прогноз:
re.findall(r'\d+(?=[^(]*\))', s)
, так что при s = "PO = 19 AND TR = 12 AND CD NOT IN (23, 45, 98, 34, 18)"
возвращается:
['23', '45', '98', '34', '18']
или, если вы предпочитаете, чтобы элементы списка были целыми числами, вы можете сопоставить их с int
:
list(map(int, re.findall(r'\d+(?=[^(]*\))', s)))
, который возвращает:
[23, 45, 98, 34, 18]