Seit Java 9
Ab dieser Version können Sie eine neue Methode verwenden [Matcher::results
](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/regex/Matcher.html#results()) ohne Args, die bequem zurückgeben kann Stream<MatchResult>
donde MatchResult
stellt das Ergebnis einer Abgleichsoperation dar und bietet die Möglichkeit, abgeglichene Gruppen und mehr zu lesen (diese Klasse ist seit Java 1.5 bekannt).
String string = "Some string with 'the data I want' inside and 'another data I want'.";
Pattern pattern = Pattern.compile("'(.*?)'");
pattern.matcher(string)
.results() // Stream<MatchResult>
.map(mr -> mr.group(1)) // Stream<String> - the 1st group of each result
.forEach(System.out::println); // print them out (or process in other way...)
Der obige Codeschnipsel ergibt:
the data I want
another data I want
Der größte Vorteil liegt in der einfachen Nutzung, wenn ein oder mehrere Ergebnisse vorliegen, im Vergleich zu den verfahrenstechnischen if (matcher.find())
y while (matcher.find())
Kontrollen und Bearbeitung.