Hallo Björn
a,b oder c können dabei * ( >=0 ) mal vorkommen. Die Worte, die man mit dieser Sprache bilden kann, sollen durch einen regulären Ausdruck beschrieben werden.
Das würde bedeuten, dass auch "" ein gültiger Name wäre. Ich gehe mal davon aus, dass du das nicht möchtest,
Doch, möcht ich ;-) Das gehört auch dazu, * also
mein Ausdruck erfordert daher ein Zeichen. Wenn du das nicht möchtest, änder das '+' in ein '*'.
Mögliche Worte(Zeichenketten) sind z.b: aaa, abcabcc, ac, bcbbbb, ba, ... Keine Worte aus dieser Sprache wären: cabac, c, abccb
wenn 'abccb' ein gültiger Name ist, kann 'abcabcc' keiner sein, dort steht nämlich kein 'a' oder 'b' vor dem letzten 'c'.
Ihr seht, eine haarige Sache also, und gar nicht _soooo_ leicht.
Finde ich nicht:
/^ # string beginnt mit
( # ein Konstrukt aus
[ab]c # c mit vorhergehenden 'a' oder 'b'
# oder
[ab] # 'a' oder 'b'
)+ # das ganze mind. 1 Mal
$/x # string endet
Also das schaut gut aus, ich hab ein bissl herumprobiert, und nix gefunden, aber ich will nix verschreien, mal abwarten ob jemand noch was findet, wo dein regex nicht hinhaut ;-(
umgeschrieben also (sorry, aber ich tu mir da einfach leichter)
((ab)c(ab))*
aaa ist ok
abcabcc ist ein FEHLER
ac ist ok
»» bcbbbb ist ok
ba ist ok
cabac ist ein FEHLER
c ist ein FEHLER
abccb ist ein FEHLER
Unwiderlegbar!
Reguläre Ausdrücke -- Jeffrey E. F. Friedl -- ISBN: 3930673622
http://www.amazon.de/exec/obidos/ASIN/3930673622/081181081181
Wenn sich herausstellt dass deins stimmt, dann verspreche ich, mir ernsthaft zu überlegen, ob ich mir das Buch kaufen soll ;-)
Da würden einige hier wohl ziemlich aufatmen ;-)
Im Hinblick auf den Frieden im Forum verspreche ich hiemit bis Jahresende das perlre durchzuackern! ob was hängenbleibt sei dahingestellt, aber der Wille ist da :-)
liebe Grüsse
Bernhard