您可以尝试将
split方法与
(?<=\G\d+,\d+,\d+),正则表达式一起使用
演示版
String data = "0,0,1,2,4,5,3,4,6";String[] array = data.split("(?<=\G\d+,\d+,\d+),"); //Magic :) // to reveal magic see explanation below answerfor(String s : array){ System.out.println(s);}输出:
0,0,12,4,53,4,6
说明
\d
表示一个数字,与[0-9]相同,例如0
或3
\d+
表示一个或多个数字,例如1
或23
\d+,
表示一个或多个后跟逗号的数字,例如1,
或234,
\d+,\d+,\d+
会接受三个数字,并且它们之间用逗号隔开12,3,456
\G
表示最后一个匹配项,或者如果没有(如果是第一次使用)字符串的开头(?<=...),
是正向后看,它将匹配逗号,
,该逗号(?<=...)
前面也有描述的字符串(?<=\G\d+,\d+,\d+),
因此将尝试查找在其前面有三个数字的逗号,并且这些数字在其前面以字符串开头(如^0,0,1
您的示例)或之前匹配的逗号(例如2,4,5
和)3,4,6
。
同样,如果您想使用其他字符,那么数字也可以使用其他字符集,例如
\w
它将匹配字母字符,数字和_
\S
不是空格的一切[^,]
一切不是逗号- … 等等。模式文档中的更多信息
顺便说一句,这种形式将在每3、5、7(以及其他奇数个)逗号上
split("(?<=\G\w+,\w+,\w+,\w+,\w+),")分割,就像在每5个逗号上分割一样。拆就每2,第4,第6,第8(和休息偶数)逗号,你将需要更换
+与
{1,maxLengthOfNumber}像split("(?<=\G\w{1,3},\w{1,3},\w{1,3},\w{1,3}),")拆就每4个逗号的时候号码可以有最多3个数字(0,00,12,000,123,412,999)。要分割每个第二个逗号,您还可以
split("(?<!\G\d+),")根据我之前的回答使用此正则表达式


