Разделить на ArrayList с помощью шаблона шаблона в Java

String s = "A..?-B^&';(,,,)G56.6C,,,M4788C..,,A1''";
String[] result = s.split("(?=[ABC])");
System.out.println(Arrays.toString(result));

Вывод:

[A..?-, B^&';(,,,)G56.6, C,,,M4788, C..,,, A1'']

Пожалуйста, обратитесь к Разделу в приведенном выше случае. Я пытаюсь разделить строки на основе A, B or C. Как я могу получить те же строки разделения в ArrayList используя pattern matcher? Я не мог понять, как сгруппировать в приведенном ниже коде.

Pattern p = Pattern.compile("(?=[ABC])");
Matcher m = p.matcher(s);
List<string> matches = new ArrayList<>();
while (m.find()) {
 matches.add(m.group());
}
</string>

Также предположим, что у меня есть несколько символов до первого появления A, B or C и я хочу совместить с первым элементом в ArrayList. , A..

Цените помощь.

1 ответ

[ABC][^ABC]*

Если бы я не отказался от какого-либо случая кромки, который должен работать с кодом, который вы предоставили

В качестве дополнительного вопроса вы можете добавить (^[^ABC]*)* в начало, но это делает его медленнее и выглядит менее читаемым, не говоря уже о том, что он будет работать только для однострочных строк для проверки. Я бы порекомендовал просто синтаксический анализ начинающих персонажей вручную, рассматривая его как особый случай.

licensed under cc by-sa 3.0 with attribution.