найти повторяющееся выражение с использованием регулярного выражения python

Привет, я пытаюсь получить следующую строку из файла

neighbors= {5 7 9 11 13 14 15 16 17 } 

Шаблон {number1 number2... } меняется, некоторые из них короткие, некоторые слишком длинные. Я хочу найти такую ​​картину. Моя логика заключается в том, чтобы получить утверждение "neighbors= {" за которым следует число и пробел в качестве повторения, пока программа не найдет последние закрытые фигурные скобки. Может ли кто-нибудь помочь мне с синтаксисом?

благодаря

Я думаю, вы ищете это:

 import re FOO = """neighbors= {5 7 9 11 13 14 15 16 17 }""" match = re.search('(neighbors\s*=\s*\{\s*(\d+\s*)+\})', FOO) print match.group(1) 

Регулярное выражение переносится, конечно, на многие языки.

Запуск этого дает …

 neighbors= {5 7 9 11 13 14 15 16 17 } 

Но регулярное выражение будет соответствовать произвольному числу цифр в фигурных скобках.

РЕДАКТИРОВАТЬ

Иллюстрирование с помощью re.findall() и re.compile()

 import re FOO = """neighbors= {5 7 9 11 13 14 15 16 17 }""" COMPILE = re.compile('(neighbors\s*=\s*\{\s*(\d+\s*)+\})') match = re.findall(COMPILE, FOO) print match[0] 

Запуск второго кода возвращается …

 neighbors= {5 7 9 11 13 14 15 16 17 } 

Хотя вы должны помнить, что .findall() предназначался для нескольких вхождений соответствия регулярных выражений внутри целевой строки. Приведенные примеры не иллюстрируют необходимость .findall()

Я бы взял всю строку со словом «соседи» в ней, вытащил строку, находящуюся между фигурными скобками, разбитую по пробелу, а затем у меня будет массив строк, который можно преобразовать в целые числа

это то, о чем вы просили:

 neighbors= \{ (\d+ )+\} 

делая его более терпимым к некоторым дополнительным пространствам вокруг {} brakets:

 neighbors= ?\{ ?(\d+ )+(\}|\d+\}) 

или более короткий:

 neighbors\s*=\s*\{[\d\s]+\}