ifullut
@ifullut
Учу программирование понарошку...

Как вывести все из скобок, но внутри них могут имеется и другие?

Всем привет

Есть такой код:
import re
text = input(": ")
print(re.findall(r"\<(.*?)\>", text))

Если ввести вот такой текст:
<Привет> <мир>
То выводит:
["Привет", "мир"]

Но если ввести:
<Привет <мир>> <да>
То выводит:
["Привет <мир", "да"]

Но мне надо чтобы вывелось:
["Привет <мир>", "да"]

В общем надо выводить весь текст из скобок с соблюдений вложений.

(P.S желательно чтобы было сделано с помощью регулярок)
  • Вопрос задан
  • 93 просмотра
Пригласить эксперта
Ответы на вопрос 3
@Levmuhin1
Чуть чуть допишите регулярку:)

import re
text = input(": ")
print(re.findall(r"<(.*?>*)>", text))

Вывод:
: <Привет <мир>> <да>
['Привет <мир>', 'да']
Ответ написан
Dr_Elvis
@Dr_Elvis Куратор тега Python
В гугле забанен
еще вариант:
'<Привет <мир>> <да>'[1:-1].split('> <')
Ответ написан
Комментировать
Vindicar
@Vindicar
RTFM!
В общем надо выводить весь текст из скобок с соблюдений вложений.

В общем случае невозможно. Всегда можно составить такую строку, на которой твоя регулярка споткнётся.
Нужно идти по строке и считать уровень сложенности скобок.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы