替换在mysql和mariadb中不起作用的正则表达式
我想用正则表达式替换mysql中的字符串。为此,我使用了REGEXP_REPLACE,但它没有给我期望的结果 我正在尝试替换替换在mysql和mariadb中不起作用的正则表达式,mysql,regex,replace,mariadb,Mysql,Regex,Replace,Mariadb,我想用正则表达式替换mysql中的字符串。为此,我使用了REGEXP_REPLACE,但它没有给我期望的结果 我正在尝试替换&breakUp=Mumbai;城市,美洲狮;品牌&至&breakUp=孟买;城市,美洲狮;布兰德,德里;状态&但regexp replace未提供所需的结果 我正在使用以下sql查询: SELECT REGEXP_REPLACE('&breakUp=Mumbai;city,Puma;brand&','&breakUp=([\w;,]*)&'
&breakUp=Mumbai;城市,美洲狮;品牌&
至&breakUp=孟买;城市,美洲狮;布兰德,德里;状态&
但regexp replace未提供所需的结果
我正在使用以下sql查询:
SELECT REGEXP_REPLACE('&breakUp=Mumbai;city,Puma;brand&','&breakUp=([\w;,]*)&','&breakUp=$1,Delhi;State&');
但它给了我以下结果:
&breakUp=Mumbai;city,Puma;brand&
除了sql之外,这些正则表达式在其他地方也可以正常工作。
如何在mysql和mariadb中解决此问题?该
\w
无效。您可以使用[[:alnum:]
或[[:alpha:]
而不是\w
:
MySQL上的解决方案:
SELECT REGEXP_REPLACE('&breakUp=Mumbai;city,Puma;brand&','&breakUp=([[[:alnum:]];,]*)&','&breakUp=$1,Delhi;State&');
SELECT REGEXP_REPLACE('&breakUp=Mumbai;city,Puma;brand&','&breakUp=([[:alnum:];,]*)&','&breakUp=\\1,Delhi;State&');
MariaDB上的解决方案:
SELECT REGEXP_REPLACE('&breakUp=Mumbai;city,Puma;brand&','&breakUp=([[[:alnum:]];,]*)&','&breakUp=$1,Delhi;State&');
SELECT REGEXP_REPLACE('&breakUp=Mumbai;city,Puma;brand&','&breakUp=([[:alnum:];,]*)&','&breakUp=\\1,Delhi;State&');
您确定替换的反向引用语法为
$1
?尝试更换中的\\1
。和[^&]*
而不是[\w;,]*
根据@WiktorStribiżew的评论,请找到@Arulkumar Ok,这就是MySQL 8,$1
可以工作。好!!谢谢如何在MariaDB中执行同样的操作?