Regex 正则表达式在第二个逗号处拆分
嗨,我需要用以下逻辑编写正则表达式: 除字符“\”在逗号之前外,每隔一秒拆分一次 也许可以举个例子来说明:Regex 正则表达式在第二个逗号处拆分,regex,oracle,plsql,Regex,Oracle,Plsql,嗨,我需要用以下逻辑编写正则表达式: 除字符“\”在逗号之前外,每隔一秒拆分一次 也许可以举个例子来说明: 1,1a,2,2a,3,3a\,b,4,4a 应得到以下结果: 1,1a 2,2a 3,3a\,b 4,4a 这是我的以下代码: SELECT REGEXP_SUBSTR (text, '[^,]+,[^,]+', 1, LEVEL) TXT FROM DUAL CONNECT BY REGEXP_SUBSTR (text, '[^,]+,[^,]+', 1, LEVEL) IS NOT
1,1a,2,2a,3,3a\,b,4,4a
应得到以下结果:
1,1a
2,2a
3,3a\,b
4,4a
这是我的以下代码:
SELECT REGEXP_SUBSTR (text, '[^,]+,[^,]+', 1, LEVEL) TXT
FROM DUAL
CONNECT BY REGEXP_SUBSTR (text, '[^,]+,[^,]+', 1, LEVEL) IS NOT NULL;
所以我现在的正则表达式是:
'[^,]+,[^,]+'
,每秒钟用逗号分隔一次。试试(\\,[^,])+
而不是普通的[^,]+我刚刚运行了你的查询,我觉得很好。。有什么问题吗?为什么3,3a\,b
使用3个逗号而不是2?Looks\是oracle中的转义字符。您需要将字符串更改为1,1a、2,2a、3,3a\\、b、4,4a
@sagi,因为这也可能是类似“Test\、Test2”的文本。。因此,如果\是逗号前的字符,则应忽略此逗号。谢谢,非常好用!我的正则表达式现在是:(\\,|[^,])+,(\\,|[^,])+
FYI-@ZerOne请确保始终使用逗号分隔集合,否则将得到不正确的结果。i、 如果你在两个1之间加一个逗号,结果将是错误的。这可能不是一个问题,这取决于数据在进入过程中的清理方式。只是让您知道一个可能的警告,因为通常用于解析列表的正则表达式格式[^,]+
不会处理空元素。有关更多信息,请参阅。