Соответствие 2 условиям в regexp_replace в postgres
Мне нужна помощь в получении правильного синтаксиса регулярных выражений в Postgres regexp_replace: Моя строка:
1ABC 2ABC 3DEF 4DEF
Мои 2 условия соответствия / замены:
Replace: A OR C but not in front of 2
or
Replace: D OR F but not in front of 4
Так что я ожидаю получить:
"1A;BC; 2ABC; 3D;EF; 4DEF;"
Моя частичная замена для условия 1:
SELECT regexp_replace('1ABC 2ABC 3DEF 4DEF', '((?<!2)(A|C))','\1;','g' );
Мой "Заменить" - это действительно "Вставить" после сопоставленного литерала.
Я просто не могу найти образец для 2-го условия, не нарушая все это. Это возможно даже в 1 заявлении?
1 ответ
Решение
SELECT regexp_replace('1ABC 2ABC 3DEF 4DEF', '((\w*[^2]A|C)|(\w*[^4]D|F))','\1;','g');
Результат: 1A;BC; 2ABC; 3D;EF; 4DEF;