Используя приведенный ниже код, я пытаюсь разбить строку «это тест 1» на массив, где первый элемент содержит строку «это тест», а второй элемент содержит 1
.
final Pattern mp = Pattern.compile("/.+?(?=0|1)/");
System.out.println(Arrays.asList(mp.split("this is a test 1")[0]));
Когда я выполняю этот код, отображается следующее:
[this is a test 1]
Регулярное выражение "/.+?(?=0|1)/"
предназначено для соответствия всем строкам, пока не встретится 1 или 0.
Как вернуть массив («это тест», 1)?
Обновление:
Должно ли это также возвращать тот же шаблон:
final Pattern reg = Pattern.compile("/.+?(?=0|1)/");
System.out.println(reg.matcher("this is a test 1").group(0));
Выдает исключение:
Exception in thread "main" java.lang.IllegalStateException: No match found
at java.util.regex.Matcher.group(Matcher.java:536)
at First.main(First.java:58)
Но по сути тот же код, но короче?