Ich versuche, einige Informationen aus Web-Server-Log zu extrahieren und es ist nicht sehr strukturiert, damit ich in Schwierigkeiten laufen, ich versuche zu entsprechen:Matching regex für optionale Werte
Beispiel 1:
2011-11-29 11:30:23,685 DEBUG [my.fully.qualified.package.Service] Added Action Item: M= 2 Success
Beispiel 2:
2011-11-29 11:30:23,685 DEBUG [my.fully.qualified.package.Service] Added Action Item: M=10 Success
Diese Regex funktioniert zum Beispiel 1:
(\d\d\d\d-\d\d-\d\d)\s[\d|:]+,\d+\s([A-Z]+)\s\[(.+)\]\s.+:\sM=\s(\d).+
Wenn die erste Gruppe das Datum ist, ist die zweite die Protokollstufe, die dritte ist der Klassenname und die dritte ist der Wert M
.
Sie haben vielleicht bemerkt, dass in Beispiel 1, nach M = gibt es ein Leerzeichen vor Ziffer und in dem anderen Beispiel gibt es nicht, deshalb ist diese Regex nicht funktioniert.
Ich habe etwas wie M=[\s|d]+
versucht, aber ich bekomme ein paar mehr Zeichen übereinstimmte, dass ich fragte, hat jeder Vorschlag, wie diese beiden Beispiele mit einem Regex übereinstimmen?