PHP RegEx - beliebiges Zeichen außer Zeichenkette

Tom1637

Grünschnabel
Hallo,

und im Voraus schon mal vielen Dank für die Aufmerksamkeit und im Idealfall auch gleich für die Hilfe :)

Gefunden werden soll das Muster XXirgendwasXXirgendwasZZirgendwasZZ, wichtig ist hierbei, dass je 2x XX und ZZ aufeinanderfolgen, mit beliebigen und beliebig vielen Zeichen dazwischen.

Bislang habe ich $regex = '/XX.*?XX.*?ZZ.*?ZZ/';

Das funktioniert grundsätzlich erstmal, der Haken: XXirgendwasZZirgendwasXXirgendwasZZirgendwasZZ wird natürlich auch gematcht, weil im ersten "irgendwas" (.*?) auch das ZZ erlaubt ist.

Die Frage also: Wie schaffe ich es, dass zwischen den beiden XX alle Mögliche vorkommen darf außer der einzigen Ausnahme ZZ?

(Für den zweiten Teil gälte dies dann genauso, zwischen den ZZs darf kein XX vorkommen, ist aber vorerst nicht so wichtig.)


Gruß
Tom
 
Es sollte so gehen:
PHP:
$pattern = "/XX((?:[^X]|X[^X])*)XX((?:[^Z]|Z[^Z])*)ZZ((?:[^Z]|Z[^Z])*)ZZ/";
$subject = "XXirgendwasXXirgendwasZZirgendwasZZ";

if ( preg_match( $pattern, $subject, $matched ) ) {
  print_r( $matched );
}
 
Hat sich das hier eigentlich geklärt (hatte das Tab seit drei Wochen oder so offen)? Falls nein, wäre ich für eine etwas konkretere Problembeschreibung (worum geht es inhaltlich) dankbar. :)
 
Zurück