我想对以下问题提供一些帮助。
我有以下字符串
1,1,0,3, '2014-12-02 12:15:13', '2015-05-20', 'string', 'other string', 1,2,1, NULL, '', '', NULL, NULL, NULL
并将进行拆分并将数组仅放入引用忽略其他数组的数组中。你甚至可以用逗号分隔,但序列各不相同。
我正在使用以下正则表达式:
String splitStr[] = str.split("\'([^\\']*)\'");
但输出如下:
1,1,0,3,, ,,,, ,,, 1,2,1, NULL,, ,,, NULL, NULL, NULL
我需要的恰恰相反,如下所示:
'2014-12-02 12:15:13', '2015-05-20', 'string', 'other string','', ''
答案 0 :(得分:3)
您可以在Java中执行此操作:
String str = str = "1,1,0,3, '2014-12-02 12:15:13', '2015-05-\\'20', 'string', 'other string', 1,2,1, NULL, '', '', NULL, NULL, NULL";
Pattern p = Pattern.compile("'([^'\\\\]*(?:\\\\.[^'\\\\]*)*)'");
Matcher m = p.matcher(str);
while (m.find()) {
System.out.println("val: [" + m.group(1) + ']');
}
<强>输出:强>
val: [2014-12-02 12:15:13]
val: [2015-05-\'20]
val: [string]
val: [other string]
val: []
val: []
答案 1 :(得分:0)
正则表达式不支持状态,因此基本上不可能将此作为一般情况。你无法“计算”你在正则表达式中看到过多少引号。
您可以找到库来执行此类操作或循环遍历String并将其拆分为自己匹配或使用模式匹配器。