例如我有这个字符串:
"blah blach ° blah °k as ° "°""
我想要做的是在没有';'的情况下替换上面字符串中的& deg在& deg
之后我在postgresql中使用以下内容
select regexp_replace('blah blach ° blah °k as ° "°"', '\°[^;]', '\&;' ,'g' );
但是我得到了这个输出
"blah blach ° ;blah °k as ° ;"°";"
我想要
"blah blach ° blah °k as ° "°""
答案 0 :(得分:0)
在您的替换中,您将获取匹配的文字字符串(替换参数中的\&
)并添加分号。您编写的正则表达式会抓取°
以及与分号不匹配的下一个字符,该字符用于匹配,但不能替换/添加。
最简单的解决方案是使用组将°
与下一个匹配字符分开。然后使用反向引用在正确的位置添加分号。
所以使用以下正则表达式:
(\°)([^;])
请注意°
是第1组,下一个字符是第2组。您现在可以使用°
\1;\2
之后添加分号
示例强>
SELECT REGEXP_REPLACE('blah blach ° blah °k as ° "°"','(\°)([^;])','\1;\2', 'g')
<强>输出强>
blah blach ° blah °k as ° "°"