Ich habe Probleme mit Regex-Lookaheads und alle Tutorials, die ich finden kann, sind für Passwort-Checks und nicht für bestimmte Zeichenkombinationen.Wie entwerfe ich ein Muster, das nur Zeichenfolgen ohne bestimmte Zeichenkombinationen erfasst?
Hier ist ein Problem, das ich nicht verstehe, die mit diesem Teil der Regex mein Kampf beschreibt:
$string1 = 'I have a yellow engine, I have a black engine';
$string2 = 'I have a yellow engine, I have a red engine';
$string3 = 'I have a red engine, I have a black engine';
$pattern = '~I.*?(?!.*(red|green|blue)).*?engine~';
$preg_match_all($pattern, $string[1-3], $matches);
$string1
Matches richtig:
0 => "I have a yellow engine"
1 => "I have a black engine"
$string2
passt die gesamte Zeichenfolge und $string3
Matches ähnlich wie $string1
.
Wie entwerfe ich ein Muster, das nur Zeichenfolgen erfasst ("Ich habe eine [Farbe] -Engine") ohne bestimmte Farben?
mit der Erfassung Gruppen: https://regex101.com/r/tO9nC5/2 – AKS
ausgezeichnet, danke! Nichts, was ich versucht habe, hat mich für einige Stunden irgendwo hingebracht, aber das zeigt mir definitiv eine vielversprechende Richtung und regex101 sieht wie ein wunderbares Werkzeug aus. –