NoPaste

regex_pascal_aufgabe_1.pas

von tegula

SNIPPET_TEXT:
  1. program regex_pascal_Aufgabe_1;
  2. // ---
  3. // Titel : Lösungsversuch zum RegEXP-Kurs im Debianforum - Pascal, Aufgabe 1 ( https://debianforum.de/forum/viewtopic.php?p=1304497#p1304497 )
  4. // Autor der Bearbeitung: tegula
  5. // Autor des Orginals: TuxPeter ( https://nopaste.debianforum.de/41756 )
  6. // ---
  7.  
  8.  
  9. uses Crt, RegExpr;
  10.  
  11. Procedure ShowMatch (r : String; s : String);
  12. // Prozedur (mit geringfügigen Änderung) von TuxPeter übernommen: https://nopaste.debianforum.de/41756
  13. var
  14.   re: TRegExpr;
  15. begin
  16.   re := TRegExpr.Create(r);
  17.   if re.Exec(s) then
  18.   begin
  19.     writeln(re.match[1]); // Änderung: writeln() statt Write () bzw. Zeilenumbruch statt Unterstrich
  20.     while re.ExecNext do
  21.     begin
  22.       writeln(re.Match[1]); // Änderung: writeln() statt Write () bzw. Zeilenumbruch statt Unterstrich
  23.     end;
  24.   end;
  25.   re.Free;
  26.   writeln;
  27. end;
  28.  
  29. begin
  30.   // Aufgabe 1.1: "[...] den RE so ändern, dass [..] alle "l" ausgeben werden".
  31.   writeln('=== Aufgabe 1.1 ===');
  32.   ShowMatch('(l)','hello world! hello pascal!');
  33.  
  34.   // 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)".
  35.   writeln('=== Aufgabe 1.2: ===');
  36.   Showmatch('hello.*(hello.{2})', 'hello world! hello pascal!')
  37.  
  38.   // Aufgabe 1.3: "Was ist der Unterschied in der Behandlung der Zeichen IN der inneren Klammer "()" und außerhalb dieser Klammer?".
  39.   // Antwort: Nur die Zeichen innerhalb der Klammer werden extrahiert.
  40. end.
  41.  
  42.  

Quellcode

Hier kannst du den Code kopieren und ihn in deinen bevorzugten Editor einfügen. PASTEBIN_DOWNLOAD_SNIPPET_EXPLAIN