Как выбрать все после определенной позиции, используя REGEXP в Oracle
Я использую Oracle 11G, и у меня есть следующая строка: I - Am in- Need Help- Please
и хотите проанализировать строку, используя -
Затем персонаж выбирает все после второго объекта. Я играл с REGEXP_REPLACE
а также SUBSTR
и я могу выбрать второй объект, но не могу выделить все после второго объекта. Я знаю, что мне нужно добавить * где-то, я думаю, но я не могу получить правильный синтаксис. Любая помощь будет принята с благодарностью.
SELECT REGEXP_SUBSTR ('I - Am in- Need of Help- Please', '[^-]+' , 1, 2)
FROM DUAL;
Приведенный выше запрос возвращает второй объект "Я в", но я хочу, чтобы это возвращало "Нужна помощь - пожалуйста". Также важно отметить, что я не хочу -
характер непосредственно после второго объекта в результате, но я хочу начать с третьего объекта.
1 ответ
Поскольку [^-]
будет соответствовать только не дефисным символам, ваша группа совпадений начнется после первого дефиса, а затем остановится до следующего. Чтобы захватить все, что следует за первым дефисом, попробуйте:
SELECT REGEXP_REPLACE(REGEXP_SUBSTR ('I - Am in- Need of Help- Please', '-.+' , 1), '-', '', 1, 1) FROM DUAL;