在postgres中匹配regexp_replace中的2个条件

时间:2018-04-24 11:59:39

标签: postgresql regexp-replace

我需要帮助在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' );

我的'替换'实际上是匹配的文字之后的'插入'。

我似乎无法在不破坏整个事情的情况下找到第二个条件的模式。这是否有可能在1个声明中?

1 个答案:

答案 0 :(得分:0)

SELECT regexp_replace('1ABC 2ABC 3DEF 4DEF', '((\w*[^2]A|C)|(\w*[^4]D|F))','\1;','g');

结果:1A;BC; 2ABC; 3D;EF; 4DEF;