MySQL 8.0下REGEXP_REPLACE替换双星号加粗标记为strong标签报错如何处理
MySQL 8.0 双星号标记转strong标签解决方案
报错原因
你遇到的正则语法报错由两个问题导致:
- MySQL的字符串中反斜杠本身是SQL转义字符,你写的
\*会被SQL层提前转义为普通*,最终传递给正则引擎的表达式不符合语法要求 - MySQL的
REGEXP_REPLACE函数引用捕获组无需额外加反斜杠,直接使用$1即可
正确实现代码
SET @markup = 'The word **bold** should be **bold** in each instance'; SELECT REGEXP_REPLACE( @markup, '\\*{2}(.*?)\\*{2}','<strong>$1</strong>') AS Markup;
优化说明
如果你的加粗内容中不会出现单独的星号,可以使用更高效的精准匹配写法,避免非贪婪匹配的性能损耗:
REGEXP_REPLACE( @markup, '\\*{2}([^*]*)\\*{2}','<strong>$1</strong>')
执行结果
运行上述代码后即可得到预期输出:
The word <strong>bold</strong> should be <strong>bold</strong> in each instance
内容的提问来源于stack exchange,提问作者Beems
相关产品推荐
相关产品推荐

