Stringbestandteile mit Named Capture Groups auslesen.
Das Beispiel
Folgendes Beispiel liest eine Log-Zeile von Log4j aus und zerlegt diese in ihre Bestandteile.
public class Main {
public static void main(String[] args) {
var msg = "2022-01-20 12:00:05 INFO This is the message";
parseLine(msg);
}
private static final String ENTRY_REGEX = "^(?<datetime>\\d*-\\d*-\\d*\\s\\d*:\\d*:\\d*)\\s(?<type>.*?)(\\s){1,2}(?<msg>((.*)\\n*(.*)))";
public static void parseLine(String line) {
var matcher = Pattern.compile(ENTRY_REGEX).matcher(line);
if (matcher.find()) {
var datetime = matcher.group("datetime");
var type = matcher.group("type");
var msgText = matcher.group("msg");
}
}
}
Im regulären Ausdruck haben wir drei Groups: datetime, type und msg. Matcht der Reguläre Ausdruck, dann können wir die Bestandteile auslesen.
Das Ergebnis

