Ich habe eine Regex, die dafür verantwortlich ist, das Muster A: B in Zeilen, in denen Sie möglicherweise mehrere Übereinstimmungen haben (zB "A: BA: BA: BA: B", usw.) .) Das Problem liegt in der Komplexität dessen, was A repräsentiert.Bedingte Regex für mehrere Übereinstimmungen in einer Zeile
Ich bin mit dem regex:
\b[\w|\(|\)+]+\s*:(?:(?![\w+]+\s*:).)*
entsprechen Artikel unter:
Data_1: Tutor Elementary: 10 a F Test: 7.87 sips
Turning 1 Data (A Run), Data: 0.0 10.0 10.0 17.3 0.0
Turning 2 Data (A Run), Data2: 0.0 6.8 0.0 6.8 6.8
Data_1: Tutor Pool: Data2: A B C
Turning 2 (A Run), ABSOLUTE: 368 337 428 0 2 147
Data_4 : 4AZE Localization : 33.14 lat -86 long
Time: 0.75 Data Scenario: 3121.2
Die Frage ist, wenn Sie diese Einstellung prüfen (ich verwende https://regex101.com/), Linien 2,3 , 5 gib nicht genau das wieder, wonach ich suche. Wo das Match das erste in der Zeile ist, möchte ich alles vom Anfang der Zeile bis zum ersten ':' aufnehmen. Ist diese Art von bedingten Regex möglich? Ich habe alles versucht, was ich mir vorstellen kann, aber ich war noch nicht erfolgreich.
Vielen Dank im Voraus!
Gerade FYI können Sie regex101 Seiten https://regex101.com/r/O4JKiI/1 –
Was genau Sie zu erfassen versuchen, speichern und mit anderen teilen? Alles bis zum ersten ':' in jeder Zeile? –
Ich wusste nicht, dass Sie die Regex-Seiten teilen können. In den meisten Fällen versuche ich genau zu erfassen, was der obige Regex erfasst - mit Ausnahme der ersten Übereinstimmung der Zeile. Die Regex, die mir das gewünschte Ergebnis für den ersten Mach gibt, ist: '^ ([\ w | \ (| \), \ s] *) \ s *: (?: (?! [\ W +] + \ s *:).) * ' – PilotGuy