Hallo,
Stellt euch vor ihr habt eine Sprache die sich aus nur drei Buchstaben zusammensetzt! Es geht also um eine Sprache aus dem Alphabet {a,b,c}*, WOBEI vor jedem 'c' zumindest ein 'a' oder 'b' stehen MUSS. Ansonsten Syntaxfehler ;-) Anders gesagt: Es kann kein c vorkommen, vor dem nicht entweder mindestens ein a oder b steht!
also
/^([ab]c?)+$/
Zuerst muß ein a oder b kommen [ab], dann eventuell 'c' (c?). das ganze mindestens einmal passieren (+).
die Begrenzer (^ und $) brauchst Du, damit nicht z.B. 'zab' erkennst, wenn allerding vorher schon feststeht, daß es nur die gegebenen drei Zeichen im String gibt, dann kannst Du das auch weglassen. Alternativ könntest Du auch
hier mein Test-code
@worte = ('aaa', 'abcabc', 'ac', 'bcbbbb', 'ba', 'cabac',
'c', 'abccb','abcabcc');
foreach $wort(@worte)
{
print "$wort ist ".
($wort=~/^([ab]c?)+$/?"":"nicht ").
"richtig\n";
}
Grüße
Klaus