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

Регулярные выражения, как захватить элементы по отдельности?

На вход идёт такое чудо:

"сенсор-1 [86] скорость 85 сенсор-2 [44]. Фотоцентры 13 массы [86,13] плотность [46]. Функц. [1]. ретиналь [13] фотоактивность [32] массы-2 [13,32]"

Цель, получить данные из квадратных скобок списком по одиночке.
Моя попытка:
res = re.findall(r'\[(.*?)\]', text)
на выходе:
['86', '44', '86,13', '46', '1', '13', '32', '13,32']

Проблема в скобках типа [86,13] которые выдаются как '86,13'

Попытался:
r'\[\d{2}\]*?'
выдаёт на [86,13] => '[86'
Уже лучше, но как заставить выдать ещё и 13] не понимаю

Сижу, не знаю как задать выражение...

Спасибо
  • Вопрос задан
  • 32 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 3
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
'\[(?:(\d+),(\d+)|(\d+))\]'
Ответ написан
@Everything_is_bad
задача решается без регулярок
[el.split(']')[0] for el in text.split('[') if ']' in el]
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
(?<=[[,])(\d+)(?=[,\]])
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы