使用MariaDB中的REGEXP_REPLACE进行正则表达式查找和替换的正确语法是什么?

时间:2014-12-16 06:40:27

标签: mysql regex pcre mariadb

我需要在名为message的MySQL表中对名为post的列运行正则表达式查找和替换。

我的数据库正在运行MariaDB 10.

根据docs,MariaDB 10有一个新的REGEXP_REPLACE函数,旨在完成这个,但我似乎无法弄清楚实际的语法。

它会影响280,000行,所以理想情况下还有一种方法可以将它限制为仅在我测试时一次更改一个特定行,或者仅仅执行SELECT而不是{{1}直到我确定它能做到我想要的。

我要运行的正则表达式: UPDATE

替换字符串: \[quote\sauthor=(.+)\slink=[^\]]+]

以下是我尝试过的,但它只是抛出一个SQL错误:

[quote="$1"]

在这种情况下,原始邮件是: UPDATE post SET message = REGEXP_REPLACE(message, '\[quote\sauthor=(.+)\slink=[^\]]+]', '[quote="$1"]') WHERE post_id = 12,最终结果应为[quote author=Jon_doe link=board=2;threadid=125;start=40#msg1206 date=1065088]

使[quote="Jon_doe"]工作的正确语法是什么?

1 个答案:

答案 0 :(得分:1)

你必须在这里做很多事情:

REGEXP_REPLACE(message, "\\[quote\\sauthor=(.+)\\slink=[^\\]]+]", "\\[quote=\"\\1\"\\]")

请注意,您必须按\\1

引用该论坛