少しの正規表現がこれを行います:
public static void main(String[] args) {
final String[] myStrings = new String[] {"[17235_A, 17235_B, -1.0, 0.06838527, 1.0]", "[17235_C, 17235_D, -1.0, 0.06838527, 1.0]", "[17235_E, 17235_F, -1.0, 0.06838527, 1.0]"};
final Pattern pattern = Pattern.compile("^\\[([^,]++),\\s*+([^,]++).*+$");
for(final String string : myStrings) {
final Matcher matcher = pattern.matcher(string);
if(matcher.matches()) {
System.out.println(matcher.group(1));
System.out.println(matcher.group(2));
System.out.println("Done");
}
}
}
出力:
17235_A
17235_B
Done
17235_C
17235_D
Done
17235_E
17235_F
Done
正規表現の説明:
- は文字列の
^
先頭に一致します
- は
\\[
、先頭の "[" に一致します (ダブル esacped)
- は
([^,]++)
、最初のカンマまでのコンテンツと一致する可能性があります。これは、必要以上に最適化されています。
- thenは
,\\s*+
、任意の量の空白が続くコンマに一致します (これも可能性があります)。
- は
([^,]++)
、次のコンマまでの内容に一致します
- は
.*$
、行末までの内容に一致します (これも可能性があります)。
2 つの一致グループに、必要な が含まれるようになりましたString
。
これは、可能な限り所有一致を使用する理由についての非常に優れた記事です。