使用regexp提取参数

时间:2013-09-13 10:13:58

标签: sql regex oracle netezza

我有像

这样的数据
U=ms&sv1=5xdUE3w0&sv2=3150912100&sv3=kuqd1nwca0&sv4= altima
U=ms&sv1=5xdUE3w0&sv2=3150912100&sv3=kuqd1nwca0&sv4= altima_dhfdbf&
U=ms&sv1=5xdUE3w0&sv2=3150912100&sv3=kuqd1nwca0&sv4= altima&ddhfy6574dfx

当我使用('date','sv4=(.*?)[_|&]',1,2)时,我只能从最后两个获得, 然后我需要使用此('data','sv4=(.*?)$',1,2)来保留剩余数据。

现在我需要一次处理所有这些。

O/P : altima  from all the above data.

请在此建议,如何处理。

感谢!!!

2 个答案:

答案 0 :(得分:1)

尝试使用:

sv4=(.*?)(?:[_&]|$)

请注意,在字符类中不需要|来指定“OR”。

我不确定oracle中是否有非捕获组可用,但无法测试它。但是这在python,c#,php等中会起作用。

答案 1 :(得分:1)

regexp_substr(string,'sv4= (.*?)(_|&|$)',1,1,'i',1)

最后一个参数1,只提取第一个子表达式。