Java – RegEx und Named Capture Groups

Veröffentlicht von

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

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert