使用正则表达式拆分复杂字符串

时间:2014-02-11 16:41:40

标签: regex oracle

我有这个字符串,我需要使用Oracle Regexp_substr

进行拆分

字符串就像

"123456","4,5,6","Hi This is "Sample" String",12345,022222

我需要将此字符串拆分为

"123456"
"4,5,6"
"Hi This is "Sample" String"
12345
022222

我尝试使用以下逻辑尝试使用",作为分隔符,然后使用,作为分隔符来提取字符串,当我使用REGEXP_(string,'".*",',1,1)时它会将字符串转换为

"123456","4,5,6","Hi This is "Sample" String",

因为REGEXP是贪婪的表达。

我如何实现最终结果?

2 个答案:

答案 0 :(得分:1)

好吧,您必须访问捕获组2才能获得第一个匹配(或者只是删除引号,如果它们存在):

(?:^("*)(.+?)\1(?=,))|(?:(?<=,").+?(?=",))|(?:(?<=,)[^"]+?(?=,|$))

答案 1 :(得分:1)

这个适用于您的示例:

(".+?"(?=,))|\w+