REGEXP_REPLACE
Синтаксис
REGEXP_REPLACE(subject, pattern, replace)
Описание
REGEXP_REPLACE возвращает строку subject со всеми вхождениями регулярного выражения pattern , заменёнными строкой replace. Если вхождения не найдены, то subject возвращается без изменений.
Строка замены может содержать обратные ссылки на подвыражения в формате \N, где N — число от 1 до 9.
Функция следует правилам чувствительности к регистру эффективной коллирования. Сопоставление выполняется без учёта регистра для коллирований, нечувствительных к регистру, и с учётом регистра для коллирований, чувствительных к регистру, и для бинарных данных.
Чувствительность коллирования к регистру может быть переопределена с помощью флагов (?i) и (?-i) PCRE.
MariaDB использует библиотеку регулярных выражений PCRE для повышения производительности регулярных выражений, и REGEXP_REPLACE была введена в рамках этого улучшения.
Переменная default_regex_flags решает оставшиеся совместимости между PCRE и старой библиотекой регулярных выражений.
Примеры
SELECT REGEXP_REPLACE('ab12cd','[0-9]','') AS remove_digits;
-> abcd
SELECT REGEXP_REPLACE('<html><head><title>title</title><body>body</body></htm>', '<.+?>',' ')
AS strip_html;
-> title body
Обратные ссылки на подвыражения в формате \N, где N — число от 1 до 9:
SELECT REGEXP_REPLACE('James Bond','^(.*) (.*)$','\\2, \\1') AS reorder_name;
-> Bond, James
Сопоставления с учётом и без учёта регистра:
SELECT REGEXP_REPLACE('ABC','b','-') AS case_insensitive;
-> A-C
SELECT REGEXP_REPLACE('ABC' COLLATE utf8_bin,'b','-') AS case_sensitive;
-> ABC
SELECT REGEXP_REPLACE(BINARY 'ABC','b','-') AS binary_data;
-> ABC
Переопределение чувствительности коллирования к регистру с помощью флагов (?i) и (?-i) PCRE.
SELECT REGEXP_REPLACE('ABC','(?-i)b','-') AS force_case_sensitive;
-> ABC
SELECT REGEXP_REPLACE(BINARY 'ABC','(?i)b','-') AS force_case_insensitive;
-> A-C
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/regexp_replace/