Задача: из строки вида "В 1946 году $100 $150 542 человека $200 $120 100$ 100 лошадей 500$ 140$" извлечь только числа с долларами, а именно должно получиться 100 150 200 12 100 500 140. Я решил извлечь эти данные с помощью следующей регулярки:
import re
str = 'В 1946 году $100 $150 542 человека $200 $120 100$ 100 лошадей 500$ 140$'
print(re.findall(str, r'(?:\$(\d+)|(\d+)\$)'))
[('100', ''), ('150', ''), ('200', ''), ('120', ''), ('', '100'), ('', '500'), ('', '140')]
а хотелось бы сразу, хотя бы
[('100'), ('150'), ('200'), ('120'), ('100'), ('500'), ('140')]
Как можно этого добиться в самом регулярном выражении, без последующей обработки списка с удалением пустых значений?