2014-11-16 2 views
-1

Как я могу заменить список значений, какРегулярное выражение: Заменить значения в соответствии с таблицей перевода

married 
single 
non 
married 
couple 

в список, как это с помощью регулярного выражения

Status 2 
Status 1 
non 
Status 2 
couple 

? Я знаю, что может соответствовать каждой группе что-то вроде этого

/(married|single)/gm 

и что я могу обратиться совпадающей группой по $1, $2 .... Но как я могу адресовать и/или if-else значение group в replace-part, чтобы acutally перевести значения?

Редактировать

Допустим, у меня есть ценности, чтобы заменить в MariaDB-Colum marital в myTable. Тогда я могу сделать что-то вроде

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

Чтобы получить желаемый результат. Но есть ли способ сделать это всего одним REGEXP_REPLACE?

Благодарим за помощь!

+4

это woudn't можно через регулярное выражение в одиночку. Какой язык или инструмент вы используете? –

+1

На каком языке вы используете? – Dalorzo

+0

Мне бы хотелось сделать это в MariaDBs REGEXP_REPLACE', но ищем более общее решение. – Benvorth

ответ

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?

Смежные вопросы