我想使用正则表达式从字段中拆分字符串值。 以下是我的问题
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 :(得分:0)
括号内有分号。为了逃避它们,我添加了(?![0-9]) a negative look-ahead so specified pattern not exist.
将它们分成表格
这应该这样做:
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]))');
答案 1 :(得分:0)
要搜索的正则表达式是([^=]+)=(\{[^\}]+\}|[^;]+)(?:;|$)
要替换的正则表达式是$1=$2\r
。
对于输入字符串,他们会提供所需的结果。
请注意,此验证程序需要$
符号(+数字)来表示捕获组。