Задать вопрос

RegExp. Как не включать пустой результат из вариантов поиска?

Задача: из строки вида "В 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')]


Как можно этого добиться в самом регулярном выражении, без последующей обработки списка с удалением пустых значений?
  • Вопрос задан
  • 850 просмотров
Подписаться 3 Оценить Комментировать
Ответ пользователя Roman K К ответам на вопрос (3)
@deliro
Зачем регулярки-то?
[word.strip('$') for word in st.split() if '$' in word]
Ответ написан
Комментировать