Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 PL/SQL: Поиск парной скобки в строке  [new]
anvano
Member

Откуда: Москва
Сообщений: 986
Дано: строка начинается на скобку , содержит произвольный текст и другие скобки.

'{aa{rrr{aaaa} bbbb {mmm}} eeee} ddd {{{sssssss' 

Вопрос: как быстрее всего вырезать фрагмент до парной закрывающей скобки, считая от начала строки ?

То есть получить надо:

'{aa{rrr{aaaa} bbbb {mmm}} eeee}'

Перебирать посимвольно считая скобки что-то не хочется. С регэспами у меня как-то не очень :(


--------------------------------------------------------------
Запомните, товарищи офицеры, чтобы ничего не делать, надо уметь делать все.
11 ноя 15, 14:32    [18400262]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL: Поиск парной скобки в строке  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5151
anvano,

Задачка: регулярусом поищем парные скобки
11 ноя 15, 14:43    [18400311]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL: Поиск парной скобки в строке  [new]
психохирург
Guest
anvano
как быстрее всего вырезать фрагмент до парной закрывающей скобки, считая от начала строки ?
...
Перебирать посимвольно считая скобки что-то не хочется.
душевные противоречия надо решать с доктором.
11 ноя 15, 14:46    [18400329]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL: Поиск парной скобки в строке  [new]
Vint
Member

Откуда: Москва
Сообщений: 4564
anvano,
воспользуйся поиском. там искомое решение точно есть)) может даже и на pl\sql
+
WITH t AS
 (SELECT '{aa{rrr{aaaa} bbbb {mmm}} }eeee}' a FROM dual),
t1 AS
 (SELECT CASE
           WHEN substr(a, LEVEL, 1) = '{' THEN
            1
           WHEN substr(a, LEVEL, 1) = '}' THEN
            -1
         END b
        ,LEVEL lv
    FROM t
  CONNECT BY LEVEL <= length(a)
  )
,t2 as (SELECT SUM(b) over(ORDER BY lv) c,lv FROM t1)
select substr(a,1,nvl(min(lv),length(a))) from t2,T where c=0
11 ноя 15, 15:03    [18400474]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL: Поиск парной скобки в строке  [new]
anvano
Member

Откуда: Москва
Сообщений: 986
спасибо :)
11 ноя 15, 15:39    [18400732]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить