在 postgres 中匹配 regexp_replace 中的 2 个条件
Posted
技术标签:
【中文标题】在 postgres 中匹配 regexp_replace 中的 2 个条件【英文标题】:Matching 2 conditions in regexp_replace in postgres 【发布时间】:2018-10-04 16:21:55 【问题描述】:我需要帮助在 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】:SELECT regexp_replace('1ABC 2ABC 3DEF 4DEF', '((\w*[^2]A|C)|(\w*[^4]D|F))','\1;','g');
结果:1A;BC; 2ABC; 3D;EF; 4DEF;
【讨论】:
Eurotrash 是个天才! :-) 谢谢!以上是关于在 postgres 中匹配 regexp_replace 中的 2 个条件的主要内容,如果未能解决你的问题,请参考以下文章
在 postgres 中匹配 regexp_replace 中的 2 个条件