在Java中只显示最多5个逗号

时间:2013-10-15 03:01:43

标签: java regex string

我需要将以下输入字符串分割为第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,]

提前致谢

3 个答案:

答案 0 :(得分: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,]"
}

答案 1 :(得分:0)

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

\\G((?:\\d+,?){5}|(?:\\d+,?)+)

答案 2 :(得分:0)

或者

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

解释

(\ d +,){5} ...匹配'数字','5次

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