program regex_pascal_Aufgabe_1; // --- // Titel : Lösungsversuch zum RegEXP-Kurs im Debianforum - Pascal, Aufgabe 1 ( https://debianforum.de/forum/viewtopic.php?p=1304497#p1304497 ) // Autor der Bearbeitung: tegula // Autor des Orginals: TuxPeter ( https://nopaste.debianforum.de/41756 ) // --- uses Crt, RegExpr; Procedure ShowMatch (r : String; s : String); // Prozedur (mit geringfügigen Änderung) von TuxPeter übernommen: https://nopaste.debianforum.de/41756 var re: TRegExpr; begin re := TRegExpr.Create(r); if re.Exec(s) then begin writeln(re.match[1]); // Änderung: writeln() statt Write () bzw. Zeilenumbruch statt Unterstrich while re.ExecNext do begin writeln(re.Match[1]); // Änderung: writeln() statt Write () bzw. Zeilenumbruch statt Unterstrich end; end; re.Free; writeln; end; begin // Aufgabe 1.1: "[...] den RE so ändern, dass [..] alle "l" ausgeben werden". writeln('=== Aufgabe 1.1 ==='); ShowMatch('(l)','hello world! hello pascal!'); // Arbeitsvorschlag Nr.2: "[...] den RE so ändern, dass [..] nur das 2. "hello" finden und zusammen mit den nachfolgenden 2 Zeichen ausgeben (damit man sieht, dass es tatsächlich das 2. "hello" ist)". writeln('=== Aufgabe 1.2: ==='); Showmatch('hello.*(hello.{2})', 'hello world! hello pascal!') // Aufgabe 1.3: "Was ist der Unterschied in der Behandlung der Zeichen IN der inneren Klammer "()" und außerhalb dieser Klammer?". // Antwort: Nur die Zeichen innerhalb der Klammer werden extrahiert. end.