2

我需要将以下输入字符串拆分为第 5 个逗号。但我也需要逗号的字符串,就像在输出中一样。我试过了

(?<=\G\d+,\d+,\d+,\d+,\d+)

使用正则表达式。但它删除了第 5 位的逗号。

String data = "12,23,34,45,56,78,9,";
String[] array = data.split("(?<=\\G\\d+,\\d+,\\d+,\\d+,\\d+)"); //Magic :) 
// to reveal magic see explanation below answer
for(String s : array){
    System.out.println(s); //output = [12,23,34,45,56][78,9,]
}

有人可以尝试在下面的输出中给出我期望的解决方案吗?

input string[] = 12,23,34,45,56,78,9,`enter code here`
output = [12,23,34,45,56,][78,9,]

提前致谢

4

3 回答 3

0

你可以试试正则表达式:

(?<=^\d+,\d+,\d+,\d+,\d+,)

private static final Pattern REGEX_PATTERN = 
        Pattern.compile("(?<=^\\d+,\\d+,\\d+,\\d+,\\d+,)");

public static void main(String[] args) {
    String input = "12,23,34,45,56,78,9,";
    System.out.println(java.util.Arrays.toString(
        REGEX_PATTERN.split(input)
    )); // prints "[12,23,34,45,56,, 78,9,]"
}
于 2013-10-15T03:26:01.490 回答
0

或这个

(\d+,){5}(\d+,)*

解释

(\d+,){5}...匹配 'digit(s),' 5 次

(\d+,)*...匹配剩余部分

于 2013-10-15T03:39:24.293 回答
0

而不是使用该split()方法,您可以尝试与此模式匹配:

\\G((?:\\d+,?){5}|(?:\\d+,?)+)
于 2013-10-15T03:30:39.090 回答