Каков правильный синтаксис для поиска и замены регулярных выражений с помощью REGEXP REPLACE в MariaDB?
Мне нужно запустить регулярное выражение find-and-replace для столбца с именем message в таблице MySQL с именем post.
Моя база данных работает под управлением MariaDB 10.
Согласно docs , MariaDB 10 имеет новую функцию REGEXP_REPLACE, предназначенную именно для этого, но я, кажется, не могу понять реальный синтаксис.
Это затронет 280 000 строк, поэтому в идеале есть также способ ограничить его только изменением одной конкретной строки за один раз, пока я тестирую его, или просто делаю SELECT а не UPDATE, пока я не буду уверен, что он делает то, что я хочу.
Регулярное выражение, которое я хочу запустить:
[quotesauthor=(.+)slink=[^]]+]
Строка замены:
[quote="$1"]
Следующее было то, что я пытался, но он просто выдает ошибку SQL:
UPDATE post SET message = REGEXP_REPLACE(message, '[quotesauthor=(.+)slink=[^]]+]', '[quote="$1"]') WHERE post_id = 12
В этом случае исходное сообщение было:
[quote author=Jon_doe link=board=2;threadid=125;start=40#msg1206 date=1065088] и конечный результат должен быть [quote="Jon_doe"]
Каков правильный синтаксис, чтобы заставить это REGEXP_REPLACE работать?
1 ответ:
Вам придется сделать много побегов здесь:
Пожалуйста, обратите внимание, что вы должны ссылаться на группу поREGEXP_REPLACE(message, "\\[quote\\sauthor=(.+)\\slink=[^\\]]+]", "\\[quote=\"\\1\"\\]")\\1
Comments