Для строки «asdfdasf,abs@dev, sdfasdf» надо найти вхождение «abs@» и заменить на «abs@fn», но только в том случае, если перед вхождением запятая или пробел.
select regexp_replace(str, '([, ]abs@)', '\1fn') as val from (select 'aabs@sdfdasf,abs@dev, sd abs@fasdf' str from dual) -- Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 Connected as apps SQL> select regexp_replace(str, '([, ]abs@)', '\1fn') as val 2 from (select 'aabs@sdfdasf,abs@dev, sd abs@fasdf' str from dual); VAL -------------------------------------- aabs@sdfdasf,abs@fndev, sd abs@fnfasdf SQL>
А можно использовать regexp_replace для замены сразу нескольких выражений? Например, мне надо в строке ссылки найти www, http, https, ssl и все их удалить. это можно сделать одинарным использованием этой функции? или надо будет писать вложенности?
@Алексей
Возможно подойдет такой пример
Да, это помогло, спасибо. Но теперь появился новый вопрос. У меня есть строка вида
текст ссылки
Как я могу из этой строки вытащить только «текст ссылки»?
И могу ли я сделать это для случая, если у меня есть несколько ссылок в одной строке? Например такая:
текст ссылки
и если у меня получилась строка » 1 1 1 1″ из одинаковых символов и пробелов
как я могу их схопнуть, и вывести только один этот символ «1»?
Я так понял, что это что-то связанное с группами, но не нашел примера.
@Алексей
Ваш пример, к сожалению, не отобразился корректно.
Значение ссылок можно вырезать так:
@Алексей
схлопнуть строку ” 1 1 1 1″ можно так: