2015-05-29 3 views
0

У меня есть столбец VARCHAR, у которого нет определенного формата.ORACLE REGEXP_SUBSTR, которые соответствуют цифрам между квадратными скобками

Вот некоторые примеры:

afdsbfgf, jbhttp://www.iabvdfbdos.com/view.php?p_id=170405, arcm, cocm, fbus, bv[123545] 

Мне нужно, чтобы соответствовать подстроку в скобках, когда строка как "БВ [123545]. Эта подстрока всегда является числовой.

Я пробовал так:

REGEXP_SUBSTR (my_column, '[^bv\[]+[[:digit:]]+') 

Но это также совпадает с

'jbhttp://www.iabvdfbdos.com/view.php?p_id=170405' and returns "_id=170405" 

Заранее спасибо

+0

но я не нашел никаких скобок на вашем входе. –

+0

Извините, что я имел в виду квадратные скобки: Моим входом может быть: bv [123545]. Мне нужно получить цифры между квадратными скобками: 123545 – flavi

+0

'REGEXP_SUBSTR (my_column, 'bv \ [] ([[: digit:]] +)')'. Получить число из индекса группы 1. –

ответ

1

Предполагает скобки появляются только один раз в строке. Он захватывает первую подгруппу (часть в parens) первого появления «bv», за которой следует левая квадратная скобка, за которой следуют одна или несколько цифр, за которой следует прямоугольная квадратная скобка. Квадратные скобки экранируются, поскольку в противном случае они определяют класс символов в regex engine.

SQL> select regexp_substr('afdsbfgf, jbhttp://www.iabvdfbdos.com/view.php?p_id=170405, arcm, cocm, fbus, bv[123545]', 'bv\[(\d+)\]', 1, 1, null, 1) from dual; 

REGEXP 
------ 
123545 

SQL> 
+0

Хорошо, это работает. Спасибо! – flavi

Смежные вопросы