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

メソッドを使用する代わりに、split()次のパターンとの一致を試みることができます。

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

またはこれ

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

説明した

(\d+,){5}...「数字」に 5 回一致

(\d+,)*...残りの部分に一致

于 2013-10-15T03:39:24.293 に答える