次のパターンの Java 正規表現をどのように記述しますか。
"123(1,2),234(1,2),345(1,2),123456(1,2),789(1,2)";
結果は次のように出力されます。
123 (1,2) 234 (1,2) 345 (1,2) 123456 (1,2) 789 (1,2)
この正規表現でグローバル マッチを行います: (?<=^|\),)[0-9]+|\([0-9]+,[0-9]+\)
. これは、「)」で始まる連続した数字のグループ、または文字列の先頭、または(#,#)形式のシーケンスのいずれかと一致します。ここで、#は連続した数字のグループです。
これはそれを行います:
String[] parts = str.split("(?=\\()|(?<=\\)),");
ここにテストがあります:
public static void main (String[] args) throws java.lang.Exception {
String str = "123(1,2),234(1,2),345(1,2),123456(1,2),789(1,2)";
String[] parts = str.split("(?=\\()|(?<=\\)),");
System.out.println(Arrays.toString(parts)); }
}
出力:
[123, (1,2), 234, (1,2), 345, (1,2), 123456, (1,2), 789, (1,2)]