Вы можете использовать позитивный прогноз , чтобы сопоставить что-то, что сопровождается чем-то другим. Для сопоставления коэффициентов вы можете использовать:
>>> s = '3x3+6x2+2x1+8x0'
>>> re.findall(r'\d+(?=x)', s)
['3', '6', '2', '8']
Из документации модуля re
:
(? = ...)
Соответствует, если ... соответствует следующему, но не использует ни одной строки.
Это называется косвенным утверждением.
Например, Исаак (? = Азимов) будет
совпадать с Исааком только в том случае, если
"Азимов".
Для показателей, вы можете использовать положительный взгляд вместо:
>>> s = '3x3+6x2+2x1+8x0'
>>> re.findall(r'(?<=x)\d+', s)
['3', '2', '1', '0']
Опять из документов:
(? <= ...) Соответствует, если текущей позиции в строке предшествует совпадение для
... который заканчивается в текущей позиции.
Это называется позитивным взглядом
утверждение. (? <= abc) def найдет
совпадать в abcdef, так как взгляд назад
создаст резервную копию 3 символов и проверит,
Содержащийся шаблон соответствует. </p>