[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Головоломка
Игорь_Vasinsky
встал спор на работе - можно или нет

есть строка

слово (опис) ещё (что) раз (вот (ого) или (так))

т.е. как видно из подсветки - нужно грохнуть из строки всё что между красными скобками и их самих.

вложенности скобок может и не быть

одно условие постоянно - такая конструкция может встретиться тока в конце строки

ломаю голову над регуляркой.

модификатор жадности не использовать.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
andrey888
В регулярках не эксперт может кто подскажет...

но есть вопрос - слова только эти могут быть ? - найти слово и вырезать включая его все что дальше ))))

или слова любые ? .. и тогда тут вся суть чтоб найти опред. кол-во элементов с конца строки и вырезать их..

_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
Игорь_Vasinsky
нужно удалить последнюю группу скобок с содержимым - правой скобкой эта группа всегда упирается в конец строки.
внутри может быть что угодно

нуден только один паттерн без модификатора жадности.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
brevis
Рекурсивные шаблоны

Вто что-то такое вроде бы работает:
/(\\(((?>[^()]+)|(?-2))*\\))$/u



_____________
Чатик в телеге
Игорь_Vasinsky
brevis
проверь на этой строке

abcd (ef) gjk (lm(nop)rsq)


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
brevis
Цитата (Игорь_Vasinsky @ 26.11.2014 - 13:10)
brevis
проверь на этой строке

abcd (ef) gjk (lm(nop)rsq)
Игорь_Vasinsky
ага. тут пашет.


для php есть решение

$str = "abcd (ef) gjk (lm(sdf(sdf(sdf)))()(())(nop(sdf(sdf(sdf))))rsq((sdf(sdf(sdf)))sdf(sdf(sdf(sdf)))))";


echo preg_replace("#(\\(((?>[^()]+)|(?-2))*\\))$#", "", $str);


но использование паттерна подразумевалось в Oracle - а там не работает рекурсия и "взгляды" назад и вперёд

.. надо думать.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.