Как заменить только определенную часть текста в Oracle? - PullRequest
2 голосов
/ 27 сентября 2019

Я пытаюсь заменить определенные слова в тексте.Но не хочу, чтобы слово заменялось, если оно является частью URL.Например: слово техническое.Он заменен в обоих местах (включая URL).

select regexp_replace('Part of the Technical Network Group https://technical.com/sites/',
                      'technical','tech',1,0,'i')
  from dual

Вывод:

Part of the tech Network Group https://tech.com/sites/

Ожидаемый вывод:

Part of the tech Network Group https://technical.com/sites/

Ответы [ 2 ]

1 голос
/ 27 сентября 2019

Сделайте это в 2 шага.

Во-первых, если слово присутствует между словами, во-вторых, если слово является первым словом предложения.

select 
      regexp_replace(regexp_replace('technical Part of Technical Group https://technical.com/sites/',
                     ' technical', 
                     ' tech',1,0,'i'), 'technical ', 'tech ',1,0,'i') 
  from dual

Надеюсь, это решит вашу проблему.

0 голосов
/ 27 сентября 2019

Этот метод использует один вызов regexp_replace ().Оно соответствует слову «технический» (без учета регистра) только в том случае, если ему предшествует начало строки или пробела, и сохраняет этот предшествующий символ.Он заменяется сохраненным символом (обозначается '\1'), за которым следует 'tech'.

with tbl(str) as (
  select 'Technical Part of the Technical Network Group https://technical.com/sites/' from dual
)
select regexp_replace(str, '(^| )technical', '\1tech', 1, 0, 'i') fixed
from tbl;

FIXED                                                           
----------------------------------------------------------------
tech Part of the tech Network Group https://technical.com/sites/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...