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)来引用捕获组