Как насчет этого однострочного:
String[] parts = input.replaceAll(".*\\[class (.*)\\].*", "$1").split(", class ");
Это работает, сначала используя регулярное выражение для извлечения подстроки между "...[class "
и "]"
, затем разделяется на разделяющие символы для аккуратного извлечения целистроки.
Вот тест:
public static void main(String[] args) {
String input = "@org.junit.runners.Suite$SuiteClasses(value=[class data.XTest, class data.YTest])";
String[] parts = input.replaceAll(".*\\[class (.*)\\].*", "$1").split(", class ");
System.out.println(Arrays.toString(parts));
}
Вывод:
[data.XTest, data.YTest]