REGEX_REPLACE в MySQL все внутри символа с его значением

#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 для ссылки на первое значение группы захвата. Вы можете использовать это для ссылки на захваченное значение при замене. Я также изменил ваше регулярное выражение, чтобы оно соответствовало скобкам.