Функция Oracle REGEXP_REPLACE
Описание
Функция 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. |
вхождение | вхождение - неотрицательное целое число, указывающее на возникновение операции замены:
Если вхождение больше 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 программирования