#mysql #regex #string #sql-update #mariadb
#mysql #регулярное выражение #строка #sql-обновление #mariadb
Вопрос:
Я хотел бы заменить текстовое поле в mysql с помощью REGEX_REPLACE.
Моя строка выглядит так:
Hi friends @[Friendly User <user@contoso.com>], what are you doing?
Я хочу, чтобы удалить все внутри скобок []
и кроме текста внутри <>
.
Таким образом, вывод должен выглядеть следующим образом:
Hi friends @user@contoso.com, what are you doing?
Мой код SQL:
UPDATE `Chat`
SET `Text` = REGEXP_REPLACE(`Text`, '<(.*?)>', 'text inside <>');
Ссылка на dbfiddle:
https://dbfiddle.uk/?rdbms=mariadb_10.5amp;fiddle=f930852c6bf05fbb31125f42852093f9
Ответ №1:
UPDATE `Chat`
SET `Text` = REGEXP_REPLACE(`Text`, '\[.*<(.*?)>.*\]', '\1');
\1
является экранированным 1
для ссылки на первое значение группы захвата. Вы можете использовать это для ссылки на захваченное значение при замене. Я также изменил ваше регулярное выражение, чтобы оно соответствовало скобкам.