Ich habe mehrere Texte, die alle sind wie folgt strukturiert:Wie extrahiert man eine Liste von Informationen aus einer Regex-Gruppe?
> Record: 24G3KL
> Source: Whatever
> System Time:Oct 10, 2017 19:01:00 (MST)
> Result: finalText
Es gibt etwas mehr Text vor und nach diesem, aber es spielt keine Rolle.
Das Ziel ist es, die 6 alphanumerischen Zeichen (hier "24G3KL") jedes Mal zu extrahieren, wenn wir eine Linie mit > Result: finalText
treffen. Das Wort "finalText" kann sich unterscheiden (zum Beispiel kann es abcdefText oder irgendetwas anderes sein). Ich bin nur am Wert "finalText" interessiert.
Ich bin mit dem folgenden regulären Ausdruck:
([A-Z0-9]{6})(?:.|\n)*(?:\s*finalText)
Es funktioniert gut, und der 6 alphanumerischen Zeichen Wert wird auf die regex Gruppe extrahiert 1.
In Notepad ++, ich benutze das Suchfenster, setze Wählen Sie Reguläre Ausdrücke und klicken Sie auf die Schaltfläche Alle im aktuellen Dokument suchen.
Das Ergebnis ist eine Liste wie folgt aussehen:
Line 85186: > Result: finalText
Line 86200: > Result: finalText
Line 87258: > Result: finalText
Line 87721: > Result: finalText
Line 87761: > Result: finalText
Ich finde das komisch, weil „finalText“ durch die Regex nicht erfasst wird (beginnend mit „?“). Ich würde erwarten, dass meine Gruppe 1 (alle meine 6 alphanumerischen Zeichenwerte) statt dessen angezeigt wird.
[EDIT] Hier ist, was ich erhalten:
Im Suchergebnisfenster unten, würde ich erwarten, dass die 6 alphanumerische Zeichen Werte anstelle der „finalText“ Werte zu sehen ...
Gibt es eine Möglichkeit, es zu tun?
Auf den ersten Blick passt das Ergebnis, das Sie mit Notepad ++ erhalten, perfekt zu Ihrer Regex. Also verstehe ich nicht, wie diese Regex Ihnen die "Record:" - Referenz in einem anderen Kontext geben könnte (welche?). – cFreed
Ich bin mir nicht sicher, ob Ihre Regex korrekt ist. Es sieht aus wie '(?:. | \ N) * (?: \ S * finalText)' sucht, bis es einen 'finalText' findet, und überspringt alle anderen' Result: 'Zeilen, die nicht mit' finalText' übereinstimmen. Sie werden also "Record" -Strings aufnehmen, die Sie nicht wollen. – Blorgbeard
Siehe: https://regex101.com/r/L7DQlv/1 für was ich meine. – Blorgbeard