Regex 带分号的Postgresql正则表达式

Regex 带分号的Postgresql正则表达式,regex,postgresql,Regex,Postgresql,我想使用正则表达式从字段中拆分字符串值。 下面是我的问题 mydatabase=> SELECT regexp_replace('a1=1,2;B2b=2,3,4;C3c={3,4,5;4,5,6};D4d={4,5,6;7,8,9}', '([^0-9]|^)([=.*])(?=;|$)', '\1 \2', 'g'); regexp_replace ---------

我想使用正则表达式从字段中拆分字符串值。 下面是我的问题

mydatabase=> SELECT regexp_replace('a1=1,2;B2b=2,3,4;C3c={3,4,5;4,5,6};D4d={4,5,6;7,8,9}', 
                                   '([^0-9]|^)([=.*])(?=;|$)', '\1 \2', 'g');

   regexp_replace                    
------------------------------------------------------
 a1=1,2;B2b=2,3,4;C3c={3,4,5;4,5,6};D4d={4,5,6;7,8,9}
(1 row)
但是我想要下面这样的结果

mydatabase=>YOUR_ANSER_QUERY

regexp_replace
------------------
a1=1
B2b=2,3,4
C3c={3,4,5;4,5,6}
D4d={4,5,6;7,8,9}
(4 rows)

括号内有分号。为了逃避它们,我添加了
(?![0-9])一个负前瞻,这样指定的模式就不存在了。
将它们分隔到表中

这应该做到:

SELECT  regexp_split_to_table( 'a1=1,2;B2b=2,3,4;C3c={3,4,5;4,5,6};D4d={4,5,6;7,8,9}', ',?[1-2]?(;(?![0-9]))');

我使用了在线正则表达式替换验证程序

要搜索的正则表达式是
([^=]+)=(\{[^\}]+\}{124;[^;]+)(?:;|$)
要替换的正则表达式是
$1=$2\r

对于输入字符串,它们给出所需的结果

请注意,此验证器需要
$
符号(+number)来引用捕获组