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.