program regex_01_arbeitsvorschlaege; // --- // title: "Lösungsversuch zum RegEXP-Kurs im Debianforum" // author: "tegula" // date: "26 06 2022" // --- // // ------------------------ // ------------------------ // // **Kurs-Teil:** Pascal (Kurzeinstieg) - Arbeitsvorschläge zu Programm Nr. 1 // **Author des Kurs-Teils: TuxPeter // **URL:** https://debianforum.de/forum/viewtopic.php?p=1304497#p1304497 uses RegExpr; var re: TRegExpr; ausdruck: string; zeichenkette: string; begin // Arbeitsvorschlag Nr.1: "[...] den RE so ändern, dass [..] alle "l" ausgeben werden". writeln('=== Arbeitsvorschlag 1: ==='); ausdruck := '(l)'; zeichenkette := 'hello world! hello pascal!'; re := TRegExpr.Create(ausdruck); if re.Exec(zeichenkette) then begin WriteLn(re.Match[1]); while re.ExecNext do begin WriteLn(re.Match[1]); end; end; // 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('=== Arbeitsvorschlag 2: ==='); ausdruck := 'hello.*(hello.{2})'; zeichenkette := 'hello world! hello pascal!'; re := TRegExpr.Create(ausdruck); if re.Exec(zeichenkette) then begin WriteLn(re.Match[1]); while re.ExecNext do begin WriteLn(re.Match[1]); end; end; // Arbeitsvorschlag Nr.3 // Aufgabenstellung (Frage): "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.