перегруженный оператор «+» должен быть ошибкой унарного или двоичного оператора

Вот однострочный файл, который делает все:

List<String> strings = Arrays.asList( input.replaceAll("^.*?pattern1", "")
    .split("pattern2.*?(pattern1|$)"));

Пробой:

  1. Удалите все до шаблона1 (требуется, чтобы в итоге не было пустая строка в качестве первого члена)
  2. Разделить на входе (не жадный .*?) между pattern2 и pattern1 (или конец ввода)
  3. Использовать метод утилиты Arrays.asList() для сгенерируйте List<String>

Вот несколько тестовых кодов:

public static void main( String[] args ) {
    String input = "abcabc pattern1foopattern2 abcdefg pattern1barpattern2 morestuff";
    List<String> strings = Arrays.asList( input.replaceAll("^.*?pattern1", "").split("pattern2.*?(pattern1|$)"));
    System.out.println( strings);
}

Выход:

[foo, bar]
13
задан Community 23 May 2017 в 22:10
поделиться