Ваше регулярное выражение выглядит правильно. Я думаю, что проблема здесь - сама MariaDB. Существует подтвержденная проблема относительно основной причины: MDEV-11777
В качестве уродливого обходного пути вы можете преобразовать текст в utf8 (см. в этом обсуждении , чтобы узнать, почему это работает). Это покажет эмодзи и других персонажей как ?
.
После этого вы просто удаляете ?
.
Итак, как полный пример:
SELECT REGEXP_REPLACE(convert('<çşığ_lorem?ipsum?dolor' USING utf8),'\\?','');
Это даст вам <çşığ_loremipsumdolor
.
Это, конечно, также заменит любые действительные знаки вопроса из строки. Но я уверен, что это также можно обойти (например, заменив требуемый знак вопроса заполнителем, затем удалив ненужные знаки вопроса и снова заменив заполнитель знаками вопроса).
К сожалению, все это звучит как то, чего я бы не делал в SQL.