Regex, um alles vor der ersten optionalen Zeichenfolge zu erfassen

8

Ich möchte ein Muster aufnehmen, das die erste Instanz eines optionalen anderen Musters mit preg_match nicht enthält, zB:

%Vor%

Also wird im obigen Fall alles vor der ersten Instanz der Zeichenkette EFG abgefangen. Wenn die Zeichenfolge EFG nicht vorhanden ist, möchte ich auch die gesamte Zeichenfolge erfassen.

Ich hätte gedacht, dass das Folgende funktionieren würde, aber kein solches Glück:

%Vor%     
mulllhausen 12.05.2011, 14:13
quelle

4 Antworten

16

Sie können

verwenden %Vor%     
Jens 12.05.2011, 14:18
quelle
2

Versuchen Sie Folgendes: (.*?)(?:EFG|$)

Damit wird jedes Zeichen (so wenig wie möglich) gefunden, bis es EFG findet.

    
Josh M. 12.05.2011 14:17
quelle
1

Eine andere Möglichkeit, es zu tun:

%Vor%     
Toto 12.05.2011 14:27
quelle
0

Sie können das Ergebnis mit viel weniger Verwirrung haben:

Überprüfen Sie einfach eine einfachere Version des Musters und verwenden Sie andernfalls die ursprüngliche Zeichenfolge:

%Vor%     
Yoshi 12.05.2011 14:21
quelle

Tags und Links