替换正则表达式在mysql和mariadb中不起作用

时间:2019-06-27 07:24:09

标签: mysql regex replace mariadb

我想使用正则表达式替换mysql中的字符串。为此,我正在使用REGEXP_REPLACE,但它没有给我想要的结果。

我正在尝试将&breakUp=Mumbai;city,Puma;brand&替换为&breakUp=Mumbai;city,Puma;brand,Delhi;State&,但是用regexp替换并不能达到预期的效果。

我正在使用以下sql查询:

SELECT REGEXP_REPLACE('&breakUp=Mumbai;city,Puma;brand&','&breakUp=([\w;,]*)&','&breakUp=$1,Delhi;State&');

但这给了我以下结果:

&breakUp=Mumbai;city,Puma;brand&

相同的正则表达式在sql以外的其他地方都可以正常工作。 如何在mysql和mariadb中解决这个问题?

1 个答案:

答案 0 :(得分:2)

\w无效。您可以使用[[:alnum:]][[:alpha:]]代替\w

MySQL上的解决方案:

SELECT REGEXP_REPLACE('&breakUp=Mumbai;city,Puma;brand&','&breakUp=([[[:alnum:]];,]*)&','&breakUp=$1,Delhi;State&');

demo on dbfiddle.uk

MariaDB解决方案:

SELECT REGEXP_REPLACE('&breakUp=Mumbai;city,Puma;brand&','&breakUp=([[:alnum:];,]*)&','&breakUp=\\1,Delhi;State&');

demo on dbfiddle.uk