Кажется, что вас интересует только все между {
и }
, поэтому ваше регулярное выражение может быть намного проще:
import re
child = "{(x1<25)*2 +((x1>=25)&&(x2<200))*2+((x1>=25)&&(x2>=200))*1}"
pattern = re.compile("""
\s* # every whitespace before leading bracket
{(.*)} # everything between '{' and '}'
\s* # every whitespace after ending bracket
""", re.VERBOSE)
re.findall(pattern, child)
И вывод такой:
['(x1<25)*2 +((x1>=25)&&(x2<200))*2+((x1>=25)&&(x2>=200))*1']
Чтобы получить строку из списка (re.findall()
возвращает list
), вы можете получить к ней доступ через нулевую позицию индекса: re.findall(pattern, child)[0]
. Но также вам могут быть интересны другие методы для re
, то есть re.search()
или re.match()
.
Но если каждая строка имеет начальную и конечную скобки в первой и последней позиции, вы также можете просто сделать это:
child[1:-1]
что дает вам
'(x1<25)*2 +((x1>=25)&&(x2<200))*2+((x1>=25)&&(x2>=200))*1'