Unten ist der Inhalt:
Subject:
Security ID: S-1-5-21-3368353891-1012177287-890106238-22451
Account Name: ChamaraKer
Account Domain: JIC
Logon ID: 0x1fffb
Object:
Object Server: Security
Object Type: File
Object Name: D:\ApacheTomcat\Apache-Tomcat-6.0.36\logs\localhost.2013-07-01.log
Handle ID: 0x11dc
Ich muss die Wörter nach dem Wort Object Name:
In dieser Zeile erfassen. Welches ist D:\ApacheTomcat\Apache-Tomcat-6.0.36\logs\localhost.2013-07-01.log
. Ich hoffe, jemand kann mir dabei helfen.
^.*\bObject Name\b.*$
Entspricht - Objektname
Folgendes sollte für Sie funktionieren:
[\n\r].*Object Name:\s*([^\n\r]*)
Ihr gewünschtes Match wird in der Eroberungsgruppe 1 sein.
[\n\r][ \t]*Object Name:[ \t]*([^\n\r]*)
Wäre ähnlich, würde aber Dinge wie "blah Object Name: blah" nicht berücksichtigen und auch sicherstellen, dass die nächste Zeile nicht erfasst wird, wenn nach "Object Name:" kein tatsächlicher Inhalt vorhanden ist.
Aber ich brauche das Matchergebnis, um ... nicht in einer Matchgruppe zu sein ...
Für das, was Sie versuchen, sollte dies funktionieren. \K
setzt den Startpunkt des Spiels zurück.
\bObject Name:\s+\K\S+
Sie können das Gleiche tun, um Ihr Security ID
Streichhölzer.
\bSecurity ID:\s+\K\S+
Du bist fast da. Verwenden Sie den folgenden regulären Ausdruck (mit aktivierter Option für mehrere Zeilen)
\bObject Name:\s+(.*)$
Das komplette Spiel wäre
Object Name: D:\ApacheTomcat\Apache-Tomcat-6.0.36\logs\localhost.2013-07-01.log
während die erfasste Gruppe enthalten würde
D:\ApacheTomcat\Apache-Tomcat-6.0.36\logs\localhost.2013-07-01.log
Wenn Sie den Dateipfad direkt erfassen möchten, verwenden Sie
(?m)(?<=\bObject Name:).*$
Dies kann je nach verwendeter Sprache für Sie hilfreich sein
(?<=Object Name:).*
Es ist ein positiver Blick hinter Behauptung. Weitere Informationen finden Sie hier
Es funktioniert jedoch nicht mit Java - Skripten. In Ihrem Kommentar habe ich gelesen, dass Sie es für Logstash verwenden. Wenn Sie GROK-Parsing für Logstash verwenden, funktioniert dies. Hier können Sie sich verifizieren