Паттерн для поиска чисел, которые не находятся внутри конкретной подстроки
Мне требуется найти все числа с помощью re.findall, будь то дробные или целые, но они не должны находится внутри скобок factorial().
Я пробовал паттерн
(?<!factorial\()(?<!\.)(?:\d+(?:\.\d+)?)
, но если перед или после запятой больше 1 цифры, то это не работает
Ответы (1 шт):
Автор решения: strawdog
→ Ссылка
Возможно, проще не заморачиваться со сложными паттернами с lookahead и т. д. - легко ошибиться и не все случаи можно предусмотреть? да и затратно это. Может, сначала просто избавиться от факториалов в строке, а потом найти то, что нужно?
import re
a = "12.4 - factorial(5) + (15.7)-factorial(1.14) -3"
res = re.findall(r"[0-9.]+", re.sub(r"factorial\([^\)]+\)", "", a))
print(res)
['12.4', '15.7', '3']