Reguläre Ausdrücke - Lösungen

Aus DebianforumWiki
Zur Navigation springen Zur Suche springen

Diskussion 183941


Baustelle.png Baustelle: Dieser Artikel ist eine Baustelle. Das heißt, jemand hat sich dieses Artikels angenommen und überarbeitet ihn gerade.


Übersicht: https://wiki.debianforum.de/Regul%C3%A4re_Ausdr%C3%BCcke

Teil 01

In diesem Teil gibt es noch keine richtigen oder falschen Lösungen, daher gibt es nur eine Wiederholung der Aufgabenstellung. Antworten von Forenmitgliedern finden sich in dieser Diskussion 183942

  1. Welche Suchprobleme hattest du schon, die du entweder nicht lösen konntest oder für die du viel Handarbeit investieren musstest?
  2. Kennst du Programme, deren Stringsuche (ohne REs) mehr kann als nur stupide nach einem Suchwort zu suchen?
    Oft kann man z.B. die Unterscheidung von Gross-/Kleinschreibung an- und abschalten. Was ist dir da schon begegnet?
  3. An was für Anwendungsfälle denkst du wenn du „Reguläre Ausdrücke“ hörst?

Teil 02

Aufgabe
Das Escapezeichen ist der Unterstrich (_).
Literale Zeichen sind die Standardzeichen.
Schreibe den Ausdruck für das literale Wort: „Haus“.
Lösung
Haus

Aufgabe
Das Escapezeichen ist der Unterstrich (_).
Metazeichen sind die Standardzeichen.
Schreibe den Ausdruck für das literale Wort: „Haus“.
Lösung
_H_a_u_s

Aufgabe
Das Escapezeichen ist das grosse X.
Metazeichen sind die Standardzeichen.
Schreibe den Ausdruck für das literale Wort: „Haus“.
Lösung
XHXaXuXs

Aufgabe
Das Escapezeichen ist das kleine a.
Literale Zeichen sind die Standardzeichen.
Schreibe den Ausdruck für das literale Wort: „Haus“.
Lösung
Haaus

Aufgabe
Suche dir ein Escapezeichen aus.
Literale Zeichen sind die Standardzeichen.
Schreibe die Zeichenfolge: Literales ‚D‘, literales ‚F‘, literales ‚D‘, literales ‚E‘, Metazeichen ‚J‘, literales ‚R‘, literales ‚E‘, literales ‚s‘, literales ‚!‘, Metazeichen ‚J‘, Metazeichen ‚@‘.
Lösung
Mit Underline (_) als Metazeichen:
DFDE_JREs!_J_@

Aufgabe
Schreibe den gleichen Text aus (5) aber mit Metazeichen als Standardzeichen.
Lösung
TODO
  1. Das Escapezeichen ist die öffnende runde Klammer (‚(‘). Suche dir aus, welche Zeichenart die Standardzeichen sind. Schreibe einen Ausdruck mit nur öffnenden und schliessenden runden Klammern und erkläre ihn anschliessend.

  2. Das Escapezeichen ist das Komma (,). Literale Zeichen sind die Standardzeichen. Beschreibe den Ausdruck (vgl. (5)): „A,BCD,E,FG,,H“

  3. Das Escapezeichen ist das Komma (,). Metazeichen sind die Standardzeichen. Beschreibe den Ausdruck: „hello, world“

  4. Das Escapezeichen ist das kleine a. Literale Zeichen sind die Standardzeichen. Beschreibe den Ausdruck: „Haus“

  5. Das Escapezeichen ist das kleine a. Literale Zeichen sind die Standardzeichen. Beschreibe den Ausdruck: „Haaus“

  6. Das Escapezeichen ist das kleine a. Metazeichen sind die Standardzeichen. Beschreibe den Ausdruck: „Haaus“

  7. Schreibe ein Programm, das literalen Text passend escapet. Das Escapezeichen und die Entscheidung, welche Zeichenart die Standardzeichen sind, sollen variabel sein (z.B. CLI-Argumente). Prüfe damit deine Lösungen für die Aufgaben (1) bis (7).

  8. Auf die vorigen Aufgabe aufbauend: Schreibe ein Programm, das den escapeten Text wieder einliest und eine sprachliche Beschreibung davon ausgibt, ähnlich wie in (5). Prüfe damit deine Lösungen für die Aufgaben (8) bis (12).

Teil 03

  1. Schreibe einen egrep-Ausdruck der die Zeichenkette „Reiter“ matcht. Teste ihn entweder so:
    user@debian:~$ echo "Reiter"  |  egrep 'DEIN_AUSDRUCK'
    
    Wenn das Wort „Reiter“ ausgegeben wird, hat der Ausdruck gematcht. Oder wende den egrep-Befehl auf den Text schwäbische-kunde.txt (s.u.) an. Dort werden dann alle Zeilen ausgegeben, die „Reiter“ enthalten. Wenn du `egrep -o' verwendest, dann werden nur die gematchten Worte selbst ausgegeben.

  2. Schreibe einen egrep-Ausdruck der die Zeichenkette „Viel Steine“ matcht.

  3. Schreibe einen egrep-Ausdruck der die Zeichenkette „heil'gen“ matcht.

  4. Schreibe einen egrep-Ausdruck der die Zeichenkette „Er sprach: "Sagt an,“ matcht.

  5. Schreibe einen egrep-Ausdruck der die Zeichenkette „eben.“ matcht. Testet mit ‚-o‘ und ohne.
  6. Schreibe einen egrep-Ausdruck der die Zeichenkette „?“ matcht.

  7. Vergleiche diese egrep-Ausdrücke mit der Verwendung von fgrep, welches eine simple Stringsuche umsetzt. Bei fgrep werden alle Zeichen literal interprätiert. Wo liegen die Unterschiede? (Bis zu diesem Zeitpunkt wird euch egrep noch nicht besser als fgrep vorkommen. Das aendert sich bald.)

  8. Verwende egrep für ein Stück Quellcode, der Sonderzeichen enthält. Schreibe dafür egrep-Ausdrücke, die Sterne, Klammern und Punkte matchen.

Inputtext: schaebische-kunde.txt Icon pastebin.gif 41651

Teil 04

  1. Schreibe einen egrep-Ausdruck, der sowohl eine Alternation enthält als auch das Pipezeichen literal matcht und wende ihn auf einen dazu passenden Eingabetext an.
  2. Finde ein inhaltlich sinnvolles Beispiel für eine zwei- oder dreifach verschachtelte Alternation. ;-)
  3. Schreibe einen egrep-Ausdruck (nur mit Alternation und Unterausdrücken), um die Schreibweisen Maier, Meier, Mayer, Meier zu matchen.
  4. Ergänze (3) um die Schreibeweise Myer.
  5. Finde alternative Ausdrücke für (3) und (4) (ohne andere RE-Operatoren zu verwenden, sondern nur indem du anders gruppierst).
  6. Versuche diese Aufgaben auch mit fgrep umzusetzen. Was sind deine Erkenntnisse?
  7. Braucht man runde Klammern um den gesamten Ausdruck wenn man eine Alternation (auf oberster Ebene) verwendet?