Ziel: finden Sie ein zweites Muster und betrachten es als eine Übereinstimmung nur, wenn es das erste Mal ist, das Muster nach einem anderen Muster beobachtet wurde.Finden Sie das erste ReGex-Muster nach einem anderen Muster
Hintergrund:
Ich verwende Python-2.7 Regex
Ich habe eine bestimmte Regex Match, das ich Probleme mit. Ich versuche, den Text zwischen den eckigen Klammern im folgenden Beispiel zu erhalten.
Sample comments:
[98 g/m2 Ctrl (No IP) 95 min 340oC ]
[ ]
brauche ich die Zeile:
98 g/m2 Ctrl (No IP) 95 min 340oC
Das Problem ist die unbestimmte Anzahl von weißen Leerzeichen, Tabulatoren und neuer Linien zwischen dem Suchmuster Sample comments:
und dem Spiel möchte ich gebe mir Mühe .
Bester Versuch:
Ich bin in der Lage, den ersten Teil, leicht
match = re.findall(r'Sample comments:[.+\n+]+', string)
Aber ich kann nicht das Spiel will die Länge ich paßt den Abschnitt zwischen dem Platz greifen Klammern,
match = re.findall(r'Sample comments:[.+\n+]+\[(.+)\]', string)
Mein Denken:
Gibt es eine Möglichkeit, ReGex zu verwenden, um die erste Instanz des Musters \[(.+)\]
nach einer Übereinstimmung des Musters Sample comments:
zu finden? Oder gibt es eine robustere Möglichkeit, das Bit zwischen den quadratischen Klammern in meinem Beispielfall zu finden.
Danke,
Michael
Nicht ganz klar. Vielleicht genügen [Beispielkommentare: \ s * \ [(. *?) \ S *] '] (https://regex101.com/r/rH4kS1/1)? Siehe http://ideone.com/FZ5Ee0 –
Dein funktioniert, aber ich verstehe nicht wie. Enthält '\ s' Leerzeichen und' \ n'? Es gibt definitiv eine neue Zeile in meinem Sample, aber es scheint trotzdem zu funktionieren. –
Ja, '\ s' entspricht allen Leerzeichen, vertikal und horizontal. –