Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
红移sql使用正则表达式从字符串中获取第一、第二、第三个值,如下所示_Sql_Regex_Amazon Redshift - Fatal编程技术网

红移sql使用正则表达式从字符串中获取第一、第二、第三个值,如下所示

红移sql使用正则表达式从字符串中获取第一、第二、第三个值,如下所示,sql,regex,amazon-redshift,Sql,Regex,Amazon Redshift,模式:d0=123;d1=134;d2=123;d3=13;d4=33;d5=44;d6=55 如果要获取=&之间的第一个数字 output: 123 output: 134 如果我想获得=&之间的第二个匹配项 output: 123 output: 134 使用的正则表达式: select regexp_substr(' d0=123;d1=134;d2=123;d3=13;d4=33;d5=44;d6=55;','d[0-9]+=' ,1,2) as b; 但产出是

模式:
d0=123;d1=134;d2=123;d3=13;d4=33;d5=44;d6=55

如果要获取
=
&
之间的第一个数字

output: 
123
output: 
134
如果我想获得
=
&
之间的第二个匹配项

output: 
123
output: 
134
使用的正则表达式:

select  
  regexp_substr(' d0=123;d1=134;d2=123;d3=13;d4=33;d5=44;d6=55;','d[0-9]+=' ,1,2) as b;
但产出是这样的:

d1=

这个方向上的任何指针都会有帮助。

另一种方法是使用regex\u substr

regex_substr(s,'[^d=;]*[0-9]+[^;=d]',1,2) 

根据需要递增/递减整数值2。

它看起来不像Amazon Redshift
regex\u substr
支持捕获组提取。尝试
regexp\u replace(s,'..*;d1=([^;]+).'\1')
提取
d1
值。选择regexp\u substr('d0=123;d1=134;d2=123;d3=13;d4=33;d5=44;d6=55;','(d[0-9]+=[0-9]+;)',1,7)作为b;这使得输出为::d6=55;我仍在努力避免d6&;从上面的输出中,您是否可以将all=替换为;,然后使用split_部分(字符串“;”,2),然后使用4作为下一个值?这与一位数不匹配,例如
d0=3@WiktorStribiżew这是已知的限制,但由于红移正则表达式不支持非捕获块。没有选择了