Nachdem ich über die Erklärung nachgedacht habe, muss ich mich korrigieren und Huo's Lösung anschließen. Es müsste IMHO Haaus heißen. Ein alleinestehendes/erstes a würde ja als Escape-Zeichen interpretiert. Also muss ich das Escape-Zeichen escapen, um es als Literal behandeln und drucken zu können.Meillo hat geschrieben:14.04.2022 11:55:46Bislang gibt es drei verschiedene Antworten bei Aufgabe 4 -- wunderbar! Jetzt koennte jeder von euch mal erklaeren wie ihr zu eurer Antwort gekommen seid und warum ihr denkt, dass die richtig ist. So lernen wir alle dazu.
RegExp-Kurs 02: Metazeichen & Escaping
Re: RegExp-Kurs 02: Metazeichen & Escaping
Debian 11 & 12; Desktop-PC, Headless-NAS, Raspberry Pi 4
Teil des Upstream Betreuer Teams von Back In Time (backintime)
Teil des Upstream Betreuer Teams von Back In Time (backintime)
Re: RegExp-Kurs 02: Metazeichen & Escaping
Meillos schrieb ja in seiner Lektion:
Ich muss zugeben, dass ich ohne diesen Hinweis wohl nicht darauf gekommen wäre, das Escapezeichen selbst zu escapen.Um das Escapezeichen literal zu erhalten muss es (mit sich selbst) escapet werden. (Zwei aufeinander folgende Escapezeichen stehen immer fuer ein literales Escapezeichen.)
Re: RegExp-Kurs 02: Metazeichen & Escaping
Aeh, mit ``beschreibe'' habe ich gemeint, dass ihr die Zeichen aufzaehlen sollte so wie ich das in Aufgabe 5 gemacht habe. Die Escapezeichen wertet ihr aus und schreibt dann die Reihenfolge von Literalen und Metazeichen hin, die der Ausdruck enthaelt.Huo hat geschrieben:14.04.2022 10:34:27Bei Aufgabe 4 sehe ich, dass tegula und buhtz zu unterschiedlichen Ausdrücken gelangt sind. Ich darf noch einen weiteren Vorschlag in den Ring werfen: "Haaus"4) Das Escapezeichen ist das kleine a. Literale Zeichen sind die Standardzeichen. Schreibe den Ausdruck fuer das literale Wort: ``Haus''.10) Das Escapezeichen ist das kleine a. Literale Zeichen sind die Standardzeichen. Beschreibe den Ausdruck: ``Haus''Ich denke, Deine Lösung ist schon richtig, aber ich frage mich, ob ihre Formulierung nicht unzulässig ist. Das "u", das zum Metazeichen escapet geworden ist, könnte doch beispielsweise die Bedeutung haben: "Verdoppele das vorstehende literale Zeichen"; dann würde sich "HHs" ergeben.
Beispiel: Escapezeichen ist `_'. Literale Zeichen sind die Standardzeichen. Dann beschreibe ich den Ausdruck: `Ab_c_d__e_f' in der Form: Literales `A', literales `b', Meta `c', Meta `d', literaler `_', literales `e', Meta `f'.
So habe ich das gemeint mit dem Begriff ``beschreibe''. Man koennte das auch dekodieren nennen.
Use ed once in a while!
Re: RegExp-Kurs 02: Metazeichen & Escaping
Beschreibungen waren für die Aufgaben 8 bis 12 verlangt. tegula hat in dem Sinne ja seine Lösungen vorbildlich "beschrieben".Meillo hat geschrieben:14.04.2022 12:48:23Aeh, mit ``beschreibe'' habe ich gemeint, dass ihr die Zeichen aufzaehlen sollte so wie ich das in Aufgabe 5 gemacht habe. Die Escapezeichen wertet ihr aus und schreibt dann die Reihenfolge von Literalen und Metazeichen hin, die der Ausdruck enthaelt.
Nur bei den Aufgabe 8 und 11 weichen meine Beschreibungen von tegulas ab (Abweichungen fett):
Meine Lösung: literales "A", Meta "B", literales "C", literales "D", Meta "E", Meta "F", literales "G", literales ",", literales "H"tegula hat geschrieben:14.04.2022 02:30:48Literales Zeichen “A”, Metazeichen “B”, literales Zeichen “C”, literales Zeichen “D”, Metazeichen “E”, Metazeichen “F”, literales Zeichen G, Metazeichen “,”, literales Zeichen H.8) [*] Das Escapezeichen ist das Komma (,). Literale Zeichen sind die Standardzeichen. Beschreibe den Ausdruck (vgl. (5)): ``A,BCD,E,FG,,H''
Meine Lösung: literales "H", literales "a", literales "u", literales "s" (das ist ja quasi Aufgabe 4, nur in lesender statt schreibender Richtung, oder?)tegula hat geschrieben:14.04.2022 02:30:48Literales Zeichen “H”, Metazeichen a, literales Zeichen u, literales Zeichen s.11) Das Escapezeichen ist das kleine a. Literale Zeichen sind die Standardzeichen. Beschreibe den Ausdruck: ``Haaus''
[*] Ich habe mal die Aufgabennummer so "escapet", dass statt des Smileys das intendierte 8) zu lesen ist
Re: RegExp-Kurs 02: Metazeichen & Escaping
zu 4) meint meine Software:
zu
41640
Nachtrag - ach, Acht ) ist ein Smilie - wie escaped man das??
Code: Alles auswählen
RegEx eingeben: Haaus
Esc-Char eing.: a
Literal-Zeichen -> Haus
Meta-Zeichen ->
Code: Alles auswählen
RegEx eingeben: A,BCD,E,FG,,H
Esc-Char eing.: ,
Literal-Zeichen -> ACDG,H
Meta-Zeichen ->BEF
Nachtrag - ach, Acht ) ist ein Smilie - wie escaped man das??
Re: RegExp-Kurs 02: Metazeichen & Escaping
Es waere cool wenn dein Programm die Reihenfolge insgesamt noch bewahren koennte, z.B. so:TuxPeter hat geschrieben:14.04.2022 14:19:41Code: Alles auswählen
RegEx eingeben: A,BCD,E,FG,,H Esc-Char eing.: , Literal-Zeichen -> ACDG,H Meta-Zeichen ->BEF
Code: Alles auswählen
RegEx eingeben: A,BCD,E,FG,,H
Esc-Char eing.: ,
Literal-Zeichen -> A CD G,H
Meta-Zeichen -> B EF
Use ed once in a while!
-
- Beiträge: 3289
- Registriert: 29.06.2013 17:32:10
- Lizenz eigener Beiträge: GNU General Public License
-
Kontaktdaten:
Re: RegExp-Kurs 02: Metazeichen & Escaping
Das mit den Metazeichen und Escaping hat man bspw. auch bei strftime(3) usw., ist doch das selbe Prinzip?
(=_=)
Unsere neue Mutter: https://www.nvidia.com/de-de/data-center/a100/
Unsere neue Mutter: https://www.nvidia.com/de-de/data-center/a100/
Re: RegExp-Kurs 02: Metazeichen & Escaping
Danke! Meine Lösung war also sogar in zweierlei Hinsicht falschHuo hat geschrieben:14.04.2022 12:18:52Meillos schrieb ja in seiner Lektion:Ich muss zugeben, dass ich ohne diesen Hinweis wohl nicht darauf gekommen wäre, das Escapezeichen selbst zu escapen.Um das Escapezeichen literal zu erhalten muss es (mit sich selbst) escapet werden. (Zwei aufeinander folgende Escapezeichen stehen immer fuer ein literales Escapezeichen.)
Ich habe einerseits das Escapezeichen selbst nicht escapted und habe zusätzlich noch die literalen Zeichen escapted, obwohl in der Aufgabenstellung die literalen Zeichen als Standardzeichen definiert waren. Der erstgenannte Fehler bedeutet leider auch, dass meine Lösung zur Aufgabe 13 (zum Teil) falsch ist, da ich dort ebenfalls von der falschen Annahme ausgegangen bin, dass das Escapezeichen selbst nicht escapet werden muss. Gibt es eine "schönen" Weg, wie ich diesen Fehler beheben kann, ohne noch mehr Else-If-Verzweigungen zu nutzen (und das Script somit unübersichtlicher zu machen)?
Re: RegExp-Kurs 02: Metazeichen & Escaping
Meillo hat geschrieben:
Kleinere Wünsche können sofort erfüllt werden. Einfach noch ein Blank in die jeweils nicht betroffene Zeichenklasse setzen. Außerdem das esc-Zeichen zuerst eingeben - ist schlüssiger. (lade ich aber jetzt nicht extra noch mal hoch, falls gewünscht, doch)
Der umgekehrte Fall (meta als Standard, literal escaped) müsste eigentlich auch mit dem Progrämmchen erschlagen sein - denkt euch einfach die Ausgabe vertauscht, dh. Literal-Zeichen heißt dann Meta-Zeichen und umgekehrt.
Es waere cool wenn dein Programm die Reihenfolge insgesamt noch bewahren koennte, z.B. so:
Code: Alles auswählen
Esc-Char eingeben: ,
RegEx eingeben: A,BCD,E,FG,,H
Literal-Zeichen -> A CD G,H
Meta-Zeichen -> B EF
Der umgekehrte Fall (meta als Standard, literal escaped) müsste eigentlich auch mit dem Progrämmchen erschlagen sein - denkt euch einfach die Ausgabe vertauscht, dh. Literal-Zeichen heißt dann Meta-Zeichen und umgekehrt.
Zuletzt geändert von TuxPeter am 14.04.2022 19:30:02, insgesamt 1-mal geändert.
Re: RegExp-Kurs 02: Metazeichen & Escaping
Haben wir das nicht in der bash andauernd, diese Unterscheidung, sogar in verschiedenen Meta-Ebenen, wenn man mal man date anschaut, dann gibt es sogar zwei Meta-Ebenen, nämlich 1. welches Datum behandelt werden soll und 2. wie es formatiert werden soll. Auch das hierarchische Quoting mit den verschiedenen Anführungszeichen (doppelte, einfache, backtikets) für die verschiedenen Verarbeitungsebenen.inne hat geschrieben:14.04.2022 16:24:58Das mit den Metazeichen und Escaping hat man bspw. auch bei strftime(3) usw., ist doch das selbe Prinzip?
Re: RegExp-Kurs 02: Metazeichen & Escaping
Klasse!TuxPeter hat geschrieben:14.04.2022 19:19:00Meillo hat geschrieben:Es waere cool wenn dein Programm die Reihenfolge insgesamt noch bewahren koennte, z.B. so:Kleinere Wünsche können sofort erfüllt werden. Einfach noch ein Blank in die jeweils nicht betroffene Zeichenklasse setzen.Code: Alles auswählen
Esc-Char eingeben: , RegEx eingeben: A,BCD,E,FG,,H Literal-Zeichen -> A CD G,H Meta-Zeichen -> B EF
Fast richtig. An welche Kleinigkeit hast du dabei nicht gedacht?Der umgekehrte Fall (meta als Standard, literal escaped) müsste eigentlich auch mit dem Progrämmchen erschlagen sein - denkt euch einfach die Ausgabe vertauscht, dh. Literal-Zeichen heißt dann Meta-Zeichen und umgekehrt.
Use ed once in a while!
Re: RegExp-Kurs 02: Metazeichen & Escaping
@inne: Ja, genau.
@tegula: Weiter so! Auf diesem Wege lernt man am meisten dabei.
Ich find's klasse wie es gerade laeuft. Zumindest manche koennen diesen abstrakten Uebungen durchaus ein bisschen Spass abgewinnen.
Diejenigen, die noch mit dem Verstehen oder mit dem Spasshaben kaempfen duerfen auch gerne nochmal nachfragen und sich Dinge erklaeren lassen. Auch wenn ihr die Loesung von jemandem nicht verstanden habt, koennt ihr gerne nachfragen warum die so ist. (Vielleicht ist sie ja falsch und ihr habt es richtig verstanden. )
@tegula: Weiter so! Auf diesem Wege lernt man am meisten dabei.
Ich find's klasse wie es gerade laeuft. Zumindest manche koennen diesen abstrakten Uebungen durchaus ein bisschen Spass abgewinnen.
Diejenigen, die noch mit dem Verstehen oder mit dem Spasshaben kaempfen duerfen auch gerne nochmal nachfragen und sich Dinge erklaeren lassen. Auch wenn ihr die Loesung von jemandem nicht verstanden habt, koennt ihr gerne nachfragen warum die so ist. (Vielleicht ist sie ja falsch und ihr habt es richtig verstanden. )
Use ed once in a while!
-
- Beiträge: 3289
- Registriert: 29.06.2013 17:32:10
- Lizenz eigener Beiträge: GNU General Public License
-
Kontaktdaten:
Re: RegExp-Kurs 02: Metazeichen & Escaping
@TuxPeter
Ich kam wegen dem hier drauf:
Ich kam wegen dem hier drauf:
TuxPeter hat geschrieben:14.04.2022 10:50:26Obwohl es ja logisch sofort einsehbar ist, war mir nicht klar, dass man ENTWEDER die Metazeichen ODER die Literale escapen ... kann.
(=_=)
Unsere neue Mutter: https://www.nvidia.com/de-de/data-center/a100/
Unsere neue Mutter: https://www.nvidia.com/de-de/data-center/a100/
Re: RegExp-Kurs 02: Metazeichen & Escaping
Leider werden wir spaeter noch lernen muessen, dass es nicht immer so klar und einfach ist. Aber dazu dann spaeter mehr. Fuer den jetzigen Zeitpunkt ist deine Erkenntnis richtig und hilfreich.TuxPeter hat geschrieben:14.04.2022 10:50:26Obwohl es ja logisch sofort einsehbar ist, war mir nicht klar, dass man ENTWEDER die Metazeichen ODER die Literale escapen ... kann.
Use ed once in a while!
-
- Beiträge: 3289
- Registriert: 29.06.2013 17:32:10
- Lizenz eigener Beiträge: GNU General Public License
-
Kontaktdaten:
Re: RegExp-Kurs 02: Metazeichen & Escaping
Von den Programmierlösungen hier bin ich schwer beeindruckt
Ich habe kein Informatik versucht zu studieren und werde es auch online nicht mehr anfangen.
Aber will mal noch was für mich fragen, ganz allgemein: Zeichenketten funktionieren auch nach diesem Prinzip oder?
Wobei hier idR. " das Metazeichen ist, und Literale (auch wieder) die Standardzeichen sind? Weil: "Mit \" beginnt und endet eine Zeichenkette".
PS: Ich hoffe ich bringe das nicht durcheinander. Aber hier passt doch noch am besten bevor es wirklich um REs geht. Ansonsten bitte abtrennen.
Ich habe kein Informatik versucht zu studieren und werde es auch online nicht mehr anfangen.
Aber will mal noch was für mich fragen, ganz allgemein: Zeichenketten funktionieren auch nach diesem Prinzip oder?
Wobei hier idR. " das Metazeichen ist, und Literale (auch wieder) die Standardzeichen sind? Weil: "Mit \" beginnt und endet eine Zeichenkette".
PS: Ich hoffe ich bringe das nicht durcheinander. Aber hier passt doch noch am besten bevor es wirklich um REs geht. Ansonsten bitte abtrennen.
(=_=)
Unsere neue Mutter: https://www.nvidia.com/de-de/data-center/a100/
Unsere neue Mutter: https://www.nvidia.com/de-de/data-center/a100/
Re: RegExp-Kurs 02: Metazeichen & Escaping
Vermutlich kann man es so sagen: Eine Zeichenkette ist zunächst mal nichts weiter als das was das Wort sagt: Eine simple Aneinanderreihung von Zeichen. Wichtig ist noch, dass sie ein Anfang und ein Ende hat und damit eine bestimmte Reihenfolge hat, infolgedessen kann man die Zeichen auch abzählen und durchnummerieren und sonstwas mit ihnen anstellen. Was mit ihr passiert, bestimmt dann der Kontext - also innerhalb eines Programmes z.B. die Anführungszeichen. Die sagen dem Computer (bzw. Compiler oder Interpreter): Kümmere dich nicht um den Inhalt, reiche es einfach weiter. Aber ohne Gewähr, ich bin auch kein Informatiker - zu meiner Zeit sprach man eher von EDV als von Informatik.
Re: RegExp-Kurs 02: Metazeichen & Escaping
TuxPeter schrieb:
5) 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 `@'.
6) Schreibe den gleichen Text aus (5) aber mit Metazeichen als Standard
Stimmt soweit.
Aber: Jetzt wollen wir mal ein literales # sehen und hängen das hinten an:
Und siehe da: Dieses landet prompt in der falschen Rubrik. Es muss also auch die
Behandlung des Esc.-Zeichens angepasst bzw. vertauscht werden, wenn der Standard nicht die literalen, sondern die Metazeichen sind. (hoffentlich liege ich damit richtig)
Meillo schrieb:Der umgekehrte Fall (meta als Standard, literal escaped) müsste eigentlich auch mit dem Progrämmchen erschlagen sein - denkt euch einfach die Ausgabe vertauscht,
dh. Literal-Zeichen heißt dann Meta-Zeichen und umgekehrt.
Also, schaun wir mal: Die Aufgaben 5 u. 6 und die Ausgaben meines ProgrämmchensFast richtig. An welche Kleinigkeit hast du dabei nicht gedacht?
5) 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 `@'.
Code: Alles auswählen
Esc-Char eingeben: #
RegEx eingeben: DFDE#JREs!#J#@
Literal-Zeichen -> DFDE REs!
Meta-Zeichen -> J J@
Code: Alles auswählen
Esc-Char eingeben: #
RegEx eingeben: #D#F#D#EJ#R#E#s#!J@
Literal-Zeichen -> J J@ // Lies: dies sind die Meta-Zeichen
Meta-Zeichen -> DFDE REs! // Lies: dies sind die Literal-Zeichen
// also alles nur vertauscht
Aber: Jetzt wollen wir mal ein literales # sehen und hängen das hinten an:
Code: Alles auswählen
Esc-Char eingeben: #
RegEx eingeben: #D#F#D#EJ#R#E#s#!J@ ->##<-
Literal-Zeichen -> J J@ ->#<- // Lies: dies sind die Meta-Zeichen
Meta-Zeichen -> DFDE REs! // Lies: dies sind die Literal-Zeichen
Behandlung des Esc.-Zeichens angepasst bzw. vertauscht werden, wenn der Standard nicht die literalen, sondern die Metazeichen sind. (hoffentlich liege ich damit richtig)
Re: RegExp-Kurs 02: Metazeichen & Escaping
@TuxPeter: Du bist schon auf dem richtigen Weg, bloss noch nicht ganz am Ende davon.
Es muss mit einem Ausdruck immer moeglich sein jedes beliebige Zeichen literal darzustellen.
Schreibe nun vier verschiedene Ausdruecke, jeweils mit # als Escapezeichen:
1) Literale sind Standardzeichen. Ein Ausdruck fuer den literalen String ``a''
2) Metazeichen sind Standardzeichen. Ein Ausdruck fuer den literalen String ``a''
3) Literale sind Standardzeichen. Ein Ausdruck fuer den literalen String ``#''
4) Metazeichen sind Standardzeichen. Ein Ausdruck fuer den literalen String ``#''
Was faellt dir auf?
Es muss mit einem Ausdruck immer moeglich sein jedes beliebige Zeichen literal darzustellen.
Schreibe nun vier verschiedene Ausdruecke, jeweils mit # als Escapezeichen:
1) Literale sind Standardzeichen. Ein Ausdruck fuer den literalen String ``a''
2) Metazeichen sind Standardzeichen. Ein Ausdruck fuer den literalen String ``a''
3) Literale sind Standardzeichen. Ein Ausdruck fuer den literalen String ``#''
4) Metazeichen sind Standardzeichen. Ein Ausdruck fuer den literalen String ``#''
Was faellt dir auf?
Use ed once in a while!
Re: RegExp-Kurs 02: Metazeichen & Escaping
Hallo Meillo, danke für Deine Extra-Mühe - ich scheine im Punkt 4 echt Begriffsstutzig zu sein. Aber dann bleibt ja nur dies übrig:
Punkt 4 mal versprachlicht:
a) Wir befinden uns auf der Meta-Ebene. Um auf die literale Ebene kommen, müssen wir escapen.
b) Dort angekommen, finden wir wieder ein Escape-Zeichen vor, das aber literal zu verstehen ist - und deshalb selber escaped werden muss.
Stimmt das so?
Ich fände es ja auch logisch, zu sagen:
a) wie oben
b) Dort angekommen, finden wir wieder ein Escape-Zeichen vor. Da wir gerade von der Meta-Ebene her kommen, kann das Escape-Zeichen hier nur literal gemeint sein. - scheint aber nicht so zu sein.
Code: Alles auswählen
Schreibe nun vier verschiedene Ausdruecke, jeweils mit # als Escapezeichen:
1) Literale sind Standardzeichen. Ein Ausdruck fuer den literalen String ``a''
Lösung: a
2) Metazeichen sind Standardzeichen. Ein Ausdruck fuer den literalen String ``a''
Lösung: #a
3) Literale sind Standardzeichen. Ein Ausdruck fuer den literalen String ``#''
Lösung: ##
4) Metazeichen sind Standardzeichen. Ein Ausdruck fuer den literalen String ``#''
Lösung: ###
a) Wir befinden uns auf der Meta-Ebene. Um auf die literale Ebene kommen, müssen wir escapen.
b) Dort angekommen, finden wir wieder ein Escape-Zeichen vor, das aber literal zu verstehen ist - und deshalb selber escaped werden muss.
Stimmt das so?
Ich fände es ja auch logisch, zu sagen:
a) wie oben
b) Dort angekommen, finden wir wieder ein Escape-Zeichen vor. Da wir gerade von der Meta-Ebene her kommen, kann das Escape-Zeichen hier nur literal gemeint sein. - scheint aber nicht so zu sein.
Re: RegExp-Kurs 02: Metazeichen & Escaping
Die ersten drei Varianten sind richtig.
Ich verweise nochmal auf das was ich anfangs gepostet habe:
Du denkst etwas zu kompliziert. Es gibt nur eine Ebene von Escaping.TuxPeter hat geschrieben:16.04.2022 10:18:404) Metazeichen sind Standardzeichen. Ein Ausdruck fuer den literalen String ``#''
Lösung: ### [/code]
Punkt 4 mal versprachlicht:
a) Wir befinden uns auf der Meta-Ebene. Um auf die literale Ebene kommen, müssen wir escapen.
b) Dort angekommen, finden wir wieder ein Escape-Zeichen vor, das aber literal zu verstehen ist - und deshalb selber escaped werden muss.
Stimmt das so?
Ich verweise nochmal auf das was ich anfangs gepostet habe:
Das Wort ``immer'' im letzten Satz ist entscheidend. Ich haette dort noch einfuegen koennen: ``unabhaengig davon was die Standardzeichen sind''Meillo hat geschrieben:09.04.2022 16:14:12Escapen funktioniert folgendermassen:
1) Wir waehlen ein Escapezeichen. (Man nimmt moeglichst ein Zeichen, das selten im Text vorkommt, aber prinzipiell ist jedes Zeichen moeglich.)
2) Entweder die Literale oder die Metazeichen sind die Standardzeichen. Die andere Zeichenart muss escapet werden. D.h. vor jedes Zeichen der anderen Zeichenart muss ein Escapezeichen kommen.
3) Um das Escapezeichen literal zu erhalten muss es (mit sich selbst) escapet werden. (Zwei aufeinander folgende Escapezeichen stehen immer fuer ein literales Escapezeichen.)
Use ed once in a while!
Re: RegExp-Kurs 02: Metazeichen & Escaping
Heißt, es landet bei den Meta-Zeichen (die hier dummerweise Literale heißen), sollte aber bei den Literalen landen, die hier (noch) als "Meta" falsch deklariert sind, das hatte ich dann doch richtig kapiert, das Progr. hatte ich ja noch nicht geändert.TuxPeter hat geschrieben:15.04.2022 17:42:10TuxPeter schrieb:[...]Der umgekehrte Fall (meta als Standard, literal escaped) müsste eigentlich auch mit dem Progrämmchen erschlagen sein [...] einfach die Ausgabe vertauscht, [...]
Meillo schrieb:[...]Fast richtig. An welche Kleinigkeit hast du dabei nicht gedacht?Und siehe da: Dieses landet prompt in der falschen Rubrik.Code: Alles auswählen
[ ... ] Literal-Zeichen -> J J@ ->#<- // Lies: dies sind die Meta-Zeichen Meta-Zeichen -> DFDE REs! // Lies: dies sind die Literal-Zeichen
Die Lösung war aber so schön in meinem Kommentar, was das Progrämmchen an der Stelle falsch macht, versteckt - ein echtes Verwirrspiel, das ich zu verantworten habe - Egal, aber ich denke, ich hab's jetzt: Esc.-Zeichen doppelt -> IMMER literal.
Re: RegExp-Kurs 02: Metazeichen & Escaping
Meine Lösungen der Aufgaben 13) und 14) in Python:
13) 41641
Anwendung auf Aufgabe 4):
14) 41642
Anwendung auf Aufgabe 9):
13) 41641
Anwendung auf Aufgabe 4):
Code: Alles auswählen
$ regex_2_13.py a l Haus
Haaus
Anwendung auf Aufgabe 9):
Code: Alles auswählen
$ regex_2_14.py "," m "hello, world"
meta "h", meta "e", meta "l", meta "l", meta "o", literales " ", meta "w", meta "o", meta "r", meta "l", meta "d"
Re: RegExp-Kurs 02: Metazeichen & Escaping
@ Huo: Wow! Kurz und trotzdem super gut verständlich . Falls ich später noch eine Korrektur meiner (bisher teilweise inkorrekten) Lösung zu Aufgabe 13 schreiben sollte, werde ich mich an deiner Lösung orientieren.
Re: RegExp-Kurs 02: Metazeichen & Escaping
Na prima, da will ich doch meine neue Pascal-Version zum Zerpflücken einer RegEx-Eingabe in literale und nicht literale Zeichen auch noch mal vorzeigen. Sieht jetzt nicht mehr aus wie VHS-Pascal-Kurs Untertupfingen-Nord, die 3. Sitzung, sondern mindestens wie die 4. oder 6. Vor allem wird jetzt die Möglichkeit geboten, entweder den literalen Text oder den Meta-Text als nicht-escapten Standard zu interpretieren.
Damit alles hübsch untereinander steht, wird als Füllzeichen das einfache Anführungszeichen benutzt. (welches, nebenbei gesagt, im Pascal-Programm als literal escaped werden muss). Im RegEx kann man es trotzdem anwenden, aber in der Ausgabe nicht unterscheiden. Auf die Niederungen des UTF-Codes habe ich mich nicht eingelassen, d.h. mit deutschen Spezialitäten äöüß funktioniert es nicht korrekt, weil das 2-Byte-Codes sind. Ebenso habe auf die Meldung verzichtet, wie man das Programm beenden kann, wir sind ja hier unter uns.
Das Prog.:
41650
Beispiel:
Damit alles hübsch untereinander steht, wird als Füllzeichen das einfache Anführungszeichen benutzt. (welches, nebenbei gesagt, im Pascal-Programm als literal escaped werden muss). Im RegEx kann man es trotzdem anwenden, aber in der Ausgabe nicht unterscheiden. Auf die Niederungen des UTF-Codes habe ich mich nicht eingelassen, d.h. mit deutschen Spezialitäten äöüß funktioniert es nicht korrekt, weil das 2-Byte-Codes sind. Ebenso habe auf die Meldung verzichtet, wie man das Programm beenden kann, wir sind ja hier unter uns.
Das Prog.:
41650
Beispiel:
Code: Alles auswählen
Escape-Char: # literal=Standard? (j/n): j
Literaler Text ist Standard
RegEx: a#bcd##e##f und#j#e#t#z#t#?!
Literaler Text: a''cd'#e'#f und''''''''''''!
MetaText: ''b'''''''''''''j'e't'z't'?'
Escape-Char: # literal=Standard? (j/n): n
Literaler Text ist escaped
RegEx: a#bcd##e##f und#j#e#t#z#t#?!
Literaler Text: ''b'''#''#''''''j'e't'z't'?'
MetaText: a''cd''e''f und''''''''''''!
Re: RegExp-Kurs 02: Metazeichen & Escaping
Den dritten Teil des Kurses werde ich dann wieder zum Wochenende veroeffentlichen (also nach einer Woche Osterpause).
Nun aber mal zu den Aufgaben und Loesungen vom zweiten Teil.
Bei den Aufgaben 1 bis 3 gab's keine Probleme. Die waren klar.
Bei Aufgabe 4 gab es unterschiedliche Antworten. Huo hatte dann die richtige: viewtopic.php?t=183974&start=15#p1299872
Korrekt ist: Haaus
Das erste `a' ist noetig damit das zweite `a' als literales Zeichen interpraetiert wird. (Merke: zwei Escapezeichen hintereinander stehen immer fuer das Escapezeichen literal.)
Bei Aufgabe 5 waren die abgegebenen Loesungen beide korrekt.
Bei Aufgabe 6 im Prinzip auch, aber tegula hat einen Backslash zu viel, was vermutlich ein Vertipper war. Die Loesung von buhtz ist korrekt.
Aufgabe 7 war vielleicht zu offen formuliert und insgesamt etwas nervig, weil die ganzen Klammern mit der Zeit den Augen weh tun Meine Musterloesung:
Bei Aufgabe 9 ist Huos Programmausgabe gut: viewtopic.php?t=183974&start=45#p1299979
Vermutlich war ich nicht deutlich genug was ich mit ``beschreibe den Ausdruck'' gemeint habe. Ich hatte an eine solche Auflistung gedacht, ob jedes Zeichen literal oder als Metazeichen interpraetiert wird. Verstanden haben es die anderen inhaltlich wohl auch, sie haben nur andere Formen der Antwort gewaehlt.
Bei Aufgabe 10 waren die Antworten korrekt.
Bei Aufgabe 11 an sich auch, abgesehen von der anfaenglichen Verwirrung mit dem mit sich selbst escapten Escapezeichen, das dann kein Metazeichen wird, sondern sich selbst literal darstellt.
Bei Aufgabe 12 passt die Loesung von tegula: viewtopic.php?t=183974&start=15#p1299866
Danke auch fuer eure aktiven Programmierereien bei den Aufgaben 13 und 14!
Ich denke, dass die hilfreich sind, um damit die eigenen Loesungen der anderen Aufgaben zu pruefen. Das gilt eigentlich allgemein: Wenn man fuer ein Thema eine eigene Programmumsetzung schreibt, dann ist das sowohl eine gute Methode, um das eigene Verstaendnis zu pruefen, und man erlangt damit einen Kontrollmechanismus und wie eine zweite Perspektive auf die Aufgaben. Hier war es ja mit wenig Code moeglich.
Naeher angeschaut habe ich mir eure Programme nicht. Das koennt ihr auch gegenseitig tun. Mir ist es nur recht, wenn nicht alles an mir haengt. Bei der Erarbeitung der Loesungen zu den anderen Aufgaben hat das ja toll funktioniert.
Ich poste meine Umsetzung in C gleich auch noch.
Gibt es nun noch offene Fragen zu dieser Einheit oder den Aufgaben?
Nun aber mal zu den Aufgaben und Loesungen vom zweiten Teil.
Bei den Aufgaben 1 bis 3 gab's keine Probleme. Die waren klar.
Bei Aufgabe 4 gab es unterschiedliche Antworten. Huo hatte dann die richtige: viewtopic.php?t=183974&start=15#p1299872
Korrekt ist: Haaus
Das erste `a' ist noetig damit das zweite `a' als literales Zeichen interpraetiert wird. (Merke: zwei Escapezeichen hintereinander stehen immer fuer das Escapezeichen literal.)
Bei Aufgabe 5 waren die abgegebenen Loesungen beide korrekt.
Bei Aufgabe 6 im Prinzip auch, aber tegula hat einen Backslash zu viel, was vermutlich ein Vertipper war. Die Loesung von buhtz ist korrekt.
Aufgabe 7 war vielleicht zu offen formuliert und insgesamt etwas nervig, weil die ganzen Klammern mit der Zeit den Augen weh tun Meine Musterloesung:
Bei Aufgabe 8 gab's wieder ein bisschen mehr Unterschiede, wobei diese mehr aus der ungenauen Aufgabenbeschreibung herruehren. Am meisten meinen Erwartungen entsprochen hat die Loesung von Huo: viewtopic.php?t=183974&start=15#p1299886Literale Zeichen sind die Standardzeichen.
(())()(()((()
Literal (, Literal ), Literal ), Metazeichen ), Literal (, Literal ), Literal (, Metazeichen )
Bei Aufgabe 9 ist Huos Programmausgabe gut: viewtopic.php?t=183974&start=45#p1299979
Vermutlich war ich nicht deutlich genug was ich mit ``beschreibe den Ausdruck'' gemeint habe. Ich hatte an eine solche Auflistung gedacht, ob jedes Zeichen literal oder als Metazeichen interpraetiert wird. Verstanden haben es die anderen inhaltlich wohl auch, sie haben nur andere Formen der Antwort gewaehlt.
Bei Aufgabe 10 waren die Antworten korrekt.
Bei Aufgabe 11 an sich auch, abgesehen von der anfaenglichen Verwirrung mit dem mit sich selbst escapten Escapezeichen, das dann kein Metazeichen wird, sondern sich selbst literal darstellt.
Bei Aufgabe 12 passt die Loesung von tegula: viewtopic.php?t=183974&start=15#p1299866
Danke auch fuer eure aktiven Programmierereien bei den Aufgaben 13 und 14!
Ich denke, dass die hilfreich sind, um damit die eigenen Loesungen der anderen Aufgaben zu pruefen. Das gilt eigentlich allgemein: Wenn man fuer ein Thema eine eigene Programmumsetzung schreibt, dann ist das sowohl eine gute Methode, um das eigene Verstaendnis zu pruefen, und man erlangt damit einen Kontrollmechanismus und wie eine zweite Perspektive auf die Aufgaben. Hier war es ja mit wenig Code moeglich.
Naeher angeschaut habe ich mir eure Programme nicht. Das koennt ihr auch gegenseitig tun. Mir ist es nur recht, wenn nicht alles an mir haengt. Bei der Erarbeitung der Loesungen zu den anderen Aufgaben hat das ja toll funktioniert.
Ich poste meine Umsetzung in C gleich auch noch.
Gibt es nun noch offene Fragen zu dieser Einheit oder den Aufgaben?
Use ed once in a while!