Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Вытащить содержимое скобок


Автор: wind1 26.3.2010, 09:14
Допустим есть строка:
(содержимое1) 111 (содержимое2)(содержимое3)
Помогите, пожалуйста, составить регулярку, которая бы вытащила содержимое из скобок. В скобках также могут содержаться скобки, но их просто нужно вытаскивать как содержимое.
Вот такая регулярка не работает, вытаскивает содержимое некорректно:
|\((.+)\)|

Автор: brother79 26.3.2010, 13:25
Чтобы вложенные скобки обрабатывать - тебе надо рекурсию в регулярках смотреть, без неё никак, я на память не помню

Вот нашёл поиском 
Код


Рекурсивные шаблоны

Вместо создания вложенных шаблонов можно ввести рекурсию, обозначаемую в регулярных выражениях знаком "(?R)". Например шаблон "(\(((?>[^()]+)|(?R))*\))", примененный к строке "(abcd(ef(ghi)" оставит строку "(ghi)". Разберемся:

Сначала открывающаясяся скобка,
Затем последовательность любых символов кроме скобок,
Если попадаем на открывающуюся скобку, начинаем все заново, пока не встретим закрывающуюся скобку.




А вообще посмотри тут http://www.google.ru/search?q=%D0%A0%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D1%8F+%D0%B2+%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%BE%D0%BC+%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B8&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)