Ich habe eine Textdatei, die Bemerkungen mit einer einzigen bezeichnet '
.
Einige Zeilen haben zwei Anführungszeichen, aber ich muss alles von der ersten Instanz von a '
und dem Zeilenvorschub erhalten.
I AL01 ' A-LINE '091398 GDK 33394178
402922 0831850 ' '091398 GDK 33394179
I AL02 ' A-LINE '091398 GDK 33394180
400722 0833118 ' '091398 GDK 33394181
I A10A ' A-LINE 102 ' 53198 DJ 33394182
395335 0832203 ' ' 53198 DJ 33394183
I A10B ' A-LINE 102 ' 53198 DJ 3339418
Der geeignete reguläre Ausdruck wäre das Zeichen, gefolgt von einer beliebigen Anzahl von Zeichen [einschließlich Nullzeichen], die mit einem Ende des Zeichenfolgen- / Zeilentokens enden:
Und wenn Sie alles nach dem Zeichen erfassen , aber nicht in die Ausgabe aufnehmen möchten, würden Sie Folgendes verwenden:
Dies bedeutet im Grunde, gib mir alle Zeichen, die dem Zeichen bis zum Ende der Zeile folgen.
Bearbeiten : Es wurde festgestellt, dass $ bei der Verwendung von. * Implizit ist und daher nicht unbedingt erforderlich ist, daher das Muster:
ist technisch korrekt, es ist jedoch klarer, spezifisch zu sein und Verwirrung bei der späteren Code-Wartung zu vermeiden, daher meine Verwendung des $. Ich bin der Meinung, dass es immer besser ist, explizites Verhalten zu deklarieren, als sich auf implizites Verhalten in Situationen zu verlassen, in denen Klarheit in Frage gestellt werden könnte.
quelle
Beginnen Sie mit einem einfachen Anführungszeichen (
'
) und stimmen Sie jedes Zeichen (.
) null oder mehrmals (*
) bis zum Ende der Zeile ($
) ab.quelle
Wenn ich '. * In Windows (Notepad ++) versuchte, stimmte alles nach dem ersten' bis zum Ende der letzten Zeile überein.
Um alles bis zum Ende dieser Zeile zu erfassen, habe ich Folgendes eingegeben:
Dies würde nur alles von 'bis zum Ende dieser Zeile erfassen.
quelle
In Ihrem Beispiel würde ich das folgende Muster wählen:
Verwenden Sie mehrzeilige und globale Optionen, um alle Vorkommen abzugleichen.
Um den Zeilenvorschub in das Match aufzunehmen, können Sie Folgendes verwenden:
Dies könnte jedoch die letzte Zeile verfehlen, wenn kein Zeilenvorschub vorhanden ist.
Wenn Sie für eine einzelne Zeile nicht mit dem Zeilenvorschub übereinstimmen müssen, würde ich lieber Folgendes verwenden:
quelle
Dies erfasst alles bis zu 'in Rückreferenz 1 - und alles nach' in Rückreferenz 2. Je nach Sprache (\ ') müssen Sie möglicherweise den Apostrophen entkommen.
Schnelle Änderung: Wenn die Zeile keine '- Rückreferenz 1 hat, sollte immer noch die gesamte Zeile erfasst werden.
quelle
https://regex101.com/r/Jjc2xR/1
Ich bin mir sicher, dass dies funktioniert. Es wird de hexa serial im schlecht strukturierten Text mit mehreren Zeilen erfassen
Ich bin ein ewiger Neuling in Regex, aber ich werde versuchen, dies zu erklären
(\ w * (Hex): w *): Suchen Sie den Text in der Zeile, in der die Zeichenfolge "Hex:" enthält.
(. *?) Dies ist der zweite erfasste Text und bedeutet alles danach
(? = | $) erstellt eine Grenze, die der Abstand zwischen = und | ist
Mit der zweiten Gruppe haben Sie also den Wert
quelle