Hi auch,
Ich weiss das man sowas machen kann, nur versteh ich
nich wie diese regexp funktionieren.
Kann mir jemand helfen?
ich verstehe Dein Problem im Prinzip ganz gut, glaube ich. Mir ging es genauso, als ich angefangen habe, meine erste Sprache mit regular expressions zu lernen.
Eine kurze Erklärung, wie regular expressions "funktionieren", traue ich mir aus dem Stand nicht zu.
Die Dokumentation von Perl selbst ist da wesentlich gründlicher, auch wenn ich sie nicht für sonderlich didaktisch halte.
Was ich versuchen kann, ist, Dir die Idee zu vermitteln, die meiner Meinung nach hinter regular expression (und allen "Viertgenerationssprachen", auch SQL!) steckt.
Das, was Du bisher an Perl verwendet hast, hat von Dir verlangt, zu beschreiben, _wie_ Du ein Problem lösen willst. Du hast einen Algorithmus in Befehlen codiert, in Schleifen, Abfragen, Zuweisungen, Funktionsaufrufen. Du hast das Problem schritt für Schritt zerlegt.
Genau das tun 4GL-Sprachen aber nicht. Dort beschreibst Du nicht mehr den Lösungsweg - Du beschreibst die Eigenschaften des Ergebnisses!
Du sagst also nicht mehr "ich will jetzt diese Zeichenkette von vorne bis hinten verarbeiten", sondern "das Muster X soll gefälligst durch das Muster Y ersetzt werden". Und Perl findet selbständig heraus, wie es das am geschicktesten hin kriegt!
Bei SQL ist es übrigens genauso. Auch dort sagst Du üblicherweise nicht, daß Du den 259. Datensatz haben willst, sondern alle Datensätze, die bestimmte Eigenschaften haben (SELECT <feldliste> FROM <table> WHERE <bedingung>). Wie das die Datenbank-Engine intern umsetzt, das kann Dir (zunächst einmal, modulo Performance) egal sein.
Das Konzept ist eigentlich dafür gedacht, daß jemand in solchen Sprachen "programmieren" kann, der sich mit Algorithmen (einer m. E. relativ mathematischen Anschauungsweise von Abläufen) nicht zurecht finden würde.
Es entspricht auch viel mehr der Idee, das man eigentlich zuerst eine Aufgabenstellung schreiben sollte, bevor man irgendwas programmiert. Und das 4GL-Programm ist gar nichts Wesentlich anderes aus eine syntaktische Umsetzung der Aufgabenstellung.
Regular Expressions sind für jemanden, der aus der 3GL-Welt, also den Algorithmischen Sprachen kommt, eine ganz neue Erfahrung. Für jemanden, der Spezifikationen schreiben kann, sind sie eine tolle Sache.
Ich selbst hatte das Glück, SQL zuerst zu lernen - als mir die Analogie klar war, hatte ich die Sache verstanden. Kryptisch sind regular expressions natürlich immer noch ... da kann man sehr leicht Fehler machen und ewig nicht finden, wenn man nicht sehr sorgfältig dokumentiert, was man eigentlich tun will.
Viel Erfolg beim Einarbeiten
Michael
(oder auch: "Petri Heil" ... siehe den Troll-Thread weiter unten)