кодесурса
«Oracle

Функция Oracle REGEXP_REPLACE

script1adsense2code
script1adsense3code

Описание

Функция REGEXP_REPLACE используется для возврата source_char при каждом замене шаблона регулярного выражения на replace_string. Возвращенная строка находится в том же наборе символов, что и source_char. Он возвращает VARCHAR2, если первый аргумент не является LOB, и возвращает CLOB, если первый аргумент является LOB.

Синтаксис:

 REGEXP_REPLACE (source_char, pattern
               [, replace_string
                  [, позиция
                     [, вхождение
                        [, match_param]
                     ]
                  ]
               ]
              )

Параметры:

название Описание
source_char source_char - это символьное выражение, которое служит поисковым значением. Обычно это символьный столбец и может иметь любой из типов данных CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB или NCLOB.
шаблон шаблон является регулярным выражением. Обычно это текстовый литерал и может иметь любой из типов данных CHAR, VARCHAR2, NCHAR или NVARCHAR2. Он может содержать до 512 байт. Если тип данных шаблона отличается от типа данных source_char, то Oracle Database преобразует шаблон в тип данных source_char.
строку_замены replace_string может иметь любой из типов данных CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB или NCLOB. Если replace_string является CLOB или NCLOB, то Oracle усекает replace_string до 32K. Replace_string может содержать до 500 обратных ссылок на подвыражения в форме / n, где n - это число от 1 до 9. Если n - это символ обратной косой черты в inreplace_string, то перед ним должен стоять escape-символ (//).
позиция

позиция является положительным целым числом, указывающим символ source_char, где Oracle должен начать поиск. По умолчанию это 1, что означает, что Oracle начинает поиск с первого символа source_char.

вхождение вхождение - неотрицательное целое число, указывающее на возникновение операции замены:
  • Если вы укажете 0, Oracle заменит все совпадения.
  • Если вы укажете положительное целое число n, Oracle заменит n-е вхождение.

Если вхождение больше 1, то база данных ищет второе вхождение, начинающееся с первого символа, следующего за первым вхождением шаблона, и так далее.

match_param match_parameter - текстовый литерал, который позволяет вам изменить поведение функции по умолчанию для соответствия. Этот аргумент влияет только на процесс сопоставления и не влияет на replace_string. Вы можете указать одно или несколько из следующих значений для match_parameter:

Ссылки на регулярные выражения

Флаги

Флаги Описание
я игнорировать регистр
с с учетом регистра
N соответствует любому символу, а также соответствует символу новой строки
м многострочный
Икс игнорировать пробелы

Квантификаторы / Альтернативные классы :

символ Описание
, Любой символ кроме новой строки
Пример - соответствует любому символу
* Соответствует O или более предыдущему символу
Пример. b * - bbbeee
+ Соответствует 1 или более предыдущему символу
Пример. b + - bbbeee, beee
? Совпадает с 0 или 1 предшествующим символом, эффективно совпадать необязательно
Пример. Goog? Le - Goole, Google
| Представлять как логическое ИЛИ для альтернативных матчей
Пример. AB | CD - соответствует ab или cd

Группировка классов :

символ Описание
[] Соответствует любому персонажу в наборе
Пример. [ABC] - соответствует любому из a, b или c
() Захват групп последовательности символов вместе
Пример. (имя) - соответствует последовательности группового символа

Классы ранжирования :

символ Описание
{А} соответствует ровно м времени
Пример. b {1} - совпадать ровно 1 раз
{А,} соответствует ровно м или более раз
Пример. b {1,} - соответствует ровно 1 или более раз
{a, z} соответствует от m до n раз
Пример. b {3,5} - совпадение между 3 и 5

Классы побег персонажа :

символ Описание
/ указан следующий специальный символ
Пример. // - Соответствует символу "/".
/ п Соответствует n цифрам (цифры от 1 до 10). Символ LINE FEED, заключенный между (и).

Якоря Классы :

символ Описание
^ Начало строки. Если больше, чем одна строка соответствует любой начальной строке.
Пример. ^ ABC - начальный символ A, затем соответствует ABC
$ Окончание строки. Если больше, чем одна строка соответствует любой конечной линии.
Пример. ABC $ - заканчивающийся символ C, затем совпадать с ABC
/ A Совпадает только в начале строки.
Пример. х / б - привет, Опал! (соответствует только «привет»)
/ Z Соответствует только в конце строки.
Пример. o / A - привет Опал! (соответствует только «привет»)

Классы персонажей :

символ Описание
/ д Соответствует символу цифры Пример. / d - Hello123 (соответствует только '123')
/ D Соответствует нецифровому символу Пример. / d - Hello123 (соответствует только «Hello»)
/ ш Соответствует символу слова Пример. / w - Hello123 ### / * (соответствует только «Hello123»)
/ W Соответствует несловесному символу. Пример. / W - Hello123 ### / * (соответствует только '### / *')
/ s Соответствует пробелам
Пример. / s - Привет 123 ### (соответствует только пробелам)
/ S Соответствует без пробелов
Пример. / S - Hello 123 ### (соответствует непробельным пробелам «Hello» и «123» и «###»)

Примеры: функция Oracle REGEXP_REPLACE

В следующем примере проверяется phone_number в поисках шаблона xxx.xxx.xxxx. Oracle переформатирует этот шаблон с (xxx) xxx-xxxx

SELECT
REGEXP_REPLACE(phone_number,
'([[:digit:]]{3})\.([[:digit:]]{3})\.([[:digit:]]{4})',
'(\1) \2-\3') "REGEXP_REPLACE"
FROM employees
ORDER BY "REGEXP_REPLACE";

Пример вывода:

 REGEXP_REPLACE
----------------------
(515) 123-4444
(515) 123-4567
(515) 123-4568
(515) 123-4569
(515) 123-5555
(515) 123-7777
(515) 123-8080
(515) 123-8181
(515) 123-8888
(515) 124-4169
(515) 124-4269
(515) 124-4369
(515) 124-4469
(515) 124-4567
(515) 124-4569
(515) 127-4561
(515) 127-4562
(515) 127-4563
(515) 127-4564
, , ,

В следующем примере проверяется имя страны и ставится пробел после каждого ненулевого символа в строке.

SELECT
REGEXP_REPLACE(country_name, '(.)', '\1 ') "REGEXP_REPLACE"
FROM countries;

Выход :

 REGEXP_REPLACE
--------------------------------------------------
Регентина
Устралия
B elgium
Бразил
С анада
Швейцария
Китай
Германия
D enmark
E gypt
Франция
Я израиль
Я ndia
Я талы
Дж Апан
Кувейт
Малайзия
M exico
Нигерия
Северные земли
Сингапур
Объединенное Королевство
Соединенные Штаты Америки
Z ambia
Z Imbabwe

В следующем примере проверяется строка, ища два или более пробелов. Каждое вхождение двух или более пробелов будет заменено одним пробелом.

 SELECT
REGEXP_REPLACE('the   web     development    tutorial  w3resource.com',
'( ){2,}', ' ') "REGEXP_REPLACE"
FROM DUAL;

Пример вывода:

 REGEXP_REPLACE
-------------------------------------------
учебник по веб-разработке w3resource.com

Предыдущая: NLSSORT
Далее: REGEXP_SUBSTR

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code