Моя входная строкагруппы захват разделенной точки с запятой строки отсутствует последнюю группу
String input=" 4313 :F:7222;scott miles:F:7639;Henry Gile:G:3721";
Это строка с точкой с запятой разделителем. Он может содержать любое количество значений, разделенных точкой с запятой
Я хочу использовать функцию захвата группы в Java и захватить следующие значения (т.е. с разделителями)
4313 :F:7222
scott miles:F:7639
Henry Gile:G:3721
Я знаю, что может использовать раздвоение функции в Spring класса но по какой-то причине я хочу использовать групповой захват здесь.
Я попытался
Matcher myMatcher = Pattern.compile("(.*?);").matcher(input);
while (myMatcher.find()) {
System.out.println("group is " + myMatcher.group());
}
выход
group is 4313 :F:7222;
group is scott miles:F:7639;
но ожидается выход
group is 4313 :F:7222
group is scott miles:F:7639
group is Henry Gile:G:3721
я не получаю, как захватить последнее значение после последней точкой с запятой, а также я хочу чтобы избавиться от точки с запятой, о чем я упомянул в ожидаемом исходе.
Попробуйте добавить '?' После ';'. Он должен захватить и последнюю группу. –
@SilviuBurcea no no no, не добавляйте '?' После ';'. Вы получите полностью искаженные матчи! Если вы хотите знать, что я имею в виду, ознакомьтесь с этой демонстрацией regex: http://regex101.com/r/jV6fD4 – Jerry