Suche nach regulärem Ausdruck

SetoKaiba

Mitglied
Hallo zusammen!

Ich bin (mitlerweile verzweilend) auf der Suche nach dem passenden regulärem Ausdruck für folgenden String:

Länge:
30 Zeichen
Form:
Der String ist in mehrere Teile aufgeteilt:

Teil 1:
Buchstaben zwischen K-Z

Teil 2:
Buchstaben zwischen A-J

Teil 3:
Buchstaben zwischen K-Z

Teil 4:
Buchstaben zwischen A-J

Teil 5:
Buchstaben zwischen K-Z

Teil 6:
Buchstaben zwischen A-J

Teil 7:
Buchstaben zwischen K-Z

Also immer im Wechsel K-Z und A-J.
Damit man sich das Ganze evtl etwas besser vorstellen kann, hier mal ein Beispiel:

UZNWBBJAEAAHHDUVWWCBRWQQDCZKOP

Hier sind:
Teil 1:
UZNW
Teil 2:
BBJAEAAHHD
Teil 3:
UVWW
Teil 4:
CB
Teil 5:
RWQQ
Teil 6:
DC
Teil 7:
ZKOP

Das Problem ist, wie man (hoffentlich) erkennen kann, dass die einzelnen Teile unterschiedlich lang sind und bis zu 10 Zeichen lang werden können (eine Lösung mit substr () kommt also nicht in Frage!).

Meine bisherige Lösung:

PHP:
<?php
$string = "UZNWBBJAEAAHHDUVWWCBRWQQDCZKOP";
$arr = array ();

$re = (preg_match ("=(([K-Z]{1,10}([A-J]){1,10}){3,3}[K-Z]{1,10}){30,30}=", $string, $arr) ? "klappt!" : "klappt nicht!");

echo $re;
?>

Ausgabe ist natürlich "klappt nicht!"!
Wichtig ist mir dabei, dass im Array $arr die A-J-Felder enthalten sind.
Wichtig ist außerdem, dass der String dem regulärem Ausdruck entsprechen muss. D. h. dass wenn A-J-Abschnitte zu lang, zu oft o. ä. vorkommen, darf der String nicht als richtig bewertet werden!

Ich hoffe ich konnte mein Problem klar verdeutlichen und ihr mir helfen!
Danke im voraus
 
Probiers mal so:
Code:
$re = (preg_match ("/^[K-Z]{1,10}([A-J]{1,10})[K-Z]{1,10}([A-J]{1,10})[K-Z]{1,10}([A-J]{1,10})[K-Z]{1,10}$/",(strlen($string)>30)?'':$string, $arr) ? "klappt!" : "klappt nicht!");
....da das eigentliche Problem ist, in dem Ausdruck zu prüfen, ob der String max.30 Zeichen hat, wird selber vor dieser Prüfung eliminiert...wenn er zu lang ist.
Die Prüfung der Teilmuster ist da ja nicht das Problem.
 
Zurück