正则表达式:根据转换表替换值

时间:2014-11-16 12:38:50

标签: regex replace mariadb

如何替换

之类的值列表
married
single
non
married
couple

使用正则表达式

这样的列表
Status 2
Status 1
non
Status 2
couple

?我知道可以通过类似的东西匹配每个组

/(married|single)/gm

我可以通过$1$2,...来解决匹配的群组问题。但是,如何解决和/或if-else替换部分中的组值以实际转换值?

修改

假设我要在marital中的MariaDB-colum myTable中替换值。然后我可以做类似

的事情
SELECT 
marital,
REGEXP_REPLACE(REGEXP_REPLACE(marital,
  "married", "Status 2")
, "single", "Status 1")
FROM myTable

获得所需的结果。但有没有办法只用一个REGEXP_REPLACE来做到这一点?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您无法使用单个REGEXP_REPLACE执行此操作,因为MariaDB不支持第三个参数中的所需功能。

你可以使用带数组的PHP来做到这一点:http://php.net/manual/en/function.preg-replace.php 或回调:http://php.net/manual/en/function.preg-replace-callback.php

您可以使用Perl:How to replace a set of search/replace pairs?

来完成