RegExp-Kurs 01: Motivation

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
fischig
Beiträge: 3640
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: RegExp-Kurs 01: Motivation

Beitrag von fischig » 05.04.2022 15:55:59

Meillo hat geschrieben:Wuesstest du Fragen, die fuer dich hier Sinn machen wuerden?
Ich benötigte als Anfänger für einen Einstieg eine „rudimentäre“, vorläufige, beispielgestützte Erläuterung dessen, was ich mir unter REs vorstellen soll. Damit hätte ich den Aufgaben evtl. Sinn abgewinnen können.

Meine Motivation für eine Beschäftigung mit REs ist, dass ich mir Shell-Kommandos/Skripte zusammenbasteln kann, die Aufgaben lösen, die gegebene Programme für mich nicht oder nicht zu meiner Zufriedenheit lösen.
Meillo hat geschrieben:Kannst du die Antworten der anderen nachvollziehen?
Nein dazu fehlen mir grundlegende Kenntnisse.

@MSfree
ohne Beispiele kann ich das für mich nicht nachvollziehen: Ich kann's glauben oder eben lassen.

Aber vielleicht solltet ihr euch nicht aufhalten lassen von mir. Ich bin da wohl nur eine Einzelmeinung, auf der man keinen Kurs aufbauen kann. Metadiskussionen machen wenig Sinn. Nehmt meine Anregungen im konkreten Fortgang auf oder lasst es. Ich schalte mich wieder ein, wenn ich das Gefühl habe, dass es mich weiter bringt.

Benutzeravatar
MSfree
Beiträge: 10777
Registriert: 25.09.2007 19:59:30

Re: RegExp-Kurs 01: Motivation

Beitrag von MSfree » 05.04.2022 16:07:20

fischig hat geschrieben: ↑ zum Beitrag ↑
05.04.2022 15:55:59
ohne Beispiele kann ich das für mich nicht nachvollziehen
Wie gesagt, Eingabeverifizierung. Wenn das Warenwirtschaftssystem sagt:

Code: Alles auswählen

Geben sie die Zahl der Bleistifte ein: _______
Der "dumme" Anwender tippt nun A62,x7 und die Entertaste.

Hat der Anwender da nun eine ganze Zahl eingegeben? Mit welcher RegEx sollte das Programm prüfen, ob die Eingabe eine ganze Zahl ist?

fischig
Beiträge: 3640
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: RegExp-Kurs 01: Motivation

Beitrag von fischig » 05.04.2022 16:11:34

Der "dumme" Anwender tippt nun A62,x7 und die Entertaste.

Also ich hätte da schlichte eine ganze Zahl eingegeben, das Nachdenken darüber, wer da jetzt wobei dumm war, hätte ich erst mal dem Fragenden überlassen.

Benutzeravatar
MSfree
Beiträge: 10777
Registriert: 25.09.2007 19:59:30

Re: RegExp-Kurs 01: Motivation

Beitrag von MSfree » 05.04.2022 16:22:23

fischig hat geschrieben: ↑ zum Beitrag ↑
05.04.2022 16:11:34
Also ich hätte da schlichte eine ganze Zahl eingegeben,
Der Hacker, der in des Warenwirtschaftsystem eindringen will, um die Daten dann absaugen zu können, aber nicht. :wink:

Und auch der normale Anwender, der eigentlich nur eine Zahl eingeben wollte, ist mal abgelenkt und trifft daneben. Ob Unfall, Boshaftigkeit oder schlicht Dummheit spielt keine Rolle. Wenn man an der Mensch-Maschine-Schnittstelle bereits Vorkehrungen gegen Fehlbedienung trifft, hat man viel gewonnen.

Also, welche RegEx nimmt man zum Prüfen, ob die Eingabe eine ganze Zahl ist?

Benutzeravatar
frox
Beiträge: 968
Registriert: 06.08.2004 16:29:44
Wohnort: Köln

Re: RegExp-Kurs 01: Motivation

Beitrag von frox » 05.04.2022 16:28:40

fischig hat geschrieben: ↑ zum Beitrag ↑
05.04.2022 16:11:34
Also ich hätte da schlichte eine ganze Zahl eingegeben, das Nachdenken darüber, wer da jetzt wobei dumm war, hätte ich erst mal dem Fragenden überlassen.
Naja, bei einer Inventur von sagen wir mal 12.000 Artikeln passieren schnell mal (auch ganz seltsame) Tippfehler.
Da ist es mitunter schon ganz hilfreich, möglichst viele Fehlermöglichkeiten vorher auszuschließen, ehe da nochmal ein Team zum Korrekturzählen ins Außenlager raus muss.
Anyway, ich verstehe (wie bereits geschrieben) auch gar nichts bis nicht allzu viel vom Thema.
Aber das reine grobe Mitlesen hier hat zumindest schon mal beim Fokussieren geholfen.
Gut, der Dialog von Christoph Franzen und tobo kam für mich dann zwar auch noch ein bisserl zu früh, aber grundsätzlich interessant war das schon.
Ein ganz klein wenig kenne ich halt doch aus der grundsätzlichen (wenn auch eher rudimentären) Shellbenutzung, um zumindest grob rauszulesen, worum es geht..

Will sagen: Lieber fischig, bleib bitte mit dran, sonst bin ich hier das einzige bekennende Fragezeichen. :D
Gruß, Fred

Die Zeit salzt alle Wunden

fischig
Beiträge: 3640
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: RegExp-Kurs 01: Motivation

Beitrag von fischig » 05.04.2022 16:33:36

Der Hacker, der in des Warenwirtschaftsystem eindringen will
Ich dachte, ich sei der Lohnsklave, der eine Eingabe machen soll. :wink:
Also, welche RegEx nimmt man zum Prüfen, ob die Eingabe eine ganze Zahl ist?
Eine Antwort darauf, wäre jetzt in der Tat für mich spannend gewesen. :wink:

Ich habe doch gar nix gegen REs gesagt, im Gegenteil, die interessieren mich sehr. Aber ich weiß so wenig darüber, was das denn eigentlich ist. :wink:

Benutzeravatar
MSfree
Beiträge: 10777
Registriert: 25.09.2007 19:59:30

Re: RegExp-Kurs 01: Motivation

Beitrag von MSfree » 05.04.2022 16:41:03

fischig hat geschrieben: ↑ zum Beitrag ↑
05.04.2022 16:33:36
Ich dachte, ich sei der Lohnsklave, der eine Eingabe machen soll. :wink:
Wie ich oben schon schrub: Für Endanwender, die ein bißchen auf der Shell hacken wollen, sind RegEx eher nicht gedacht. Das System soll aber vor Fehleingaben durch den "Lohnsklaven" geschützt werden.
Eine Antwort darauf, wäre jetzt in der Tat für mich spannend gewesen. :wink:
Schau halt mal bei Stackoverflow vorbei, da wird der Fall von ganz einfach bis ganz kompliziert durchgespielt:
https://stackoverflow.com/questions/904 ... tring-only

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: RegExp-Kurs 01: Motivation

Beitrag von eggy » 05.04.2022 16:42:12

In der Hoffnung, dass wir Meillos Erklärungen nicht zu weit vorgreifen ...

Aufgabe von oben, Eingabe der Inventurwerte.
Um es einfach zu halten, sagen wir mal, dass auch 0 ist ne gültige Eingabe wäre.

Zuerst schreiben wir alle möglichen gültigen Zahlen für unser Prüfprogramm auf: 0, 1, 2, ..., 10, 11, ..., 100, ... 472, ... 9999,....
Hmm, ok, das wird so Nichts, jedenfalls nicht bis morgen früh.
MSfree hat geschrieben: ↑ zum Beitrag ↑
05.04.2022 16:22:23
Also, welche RegEx nimmt man zum Prüfen, ob die Eingabe eine ganze Zahl ist?
Den "nur Zahlen und beliebig viel davon"-RegEx:

Code: Alles auswählen

[0-9]*

[ ] bedeutet (erstmal) irgendwas aus der enthaltenden Menge
0-9 ist hier (weil in [ ] ) ein Bereich: also 0,1,2,3,4,5,6,7,8,9
und * bedeutet, "beliebig oft, auch kein mal".

Eine leere Eingabe wäre also auch gültig.
Will man das nicht, statt * einfach + nehmen, das heißt dann "beliebig oft, aber mindestens einmal"

sorry @Meillo

Benutzeravatar
Phineas
Beiträge: 348
Registriert: 20.06.2012 20:26:19

Re: RegExp-Kurs 01: Motivation

Beitrag von Phineas » 05.04.2022 16:46:39

MSfree hat geschrieben: ↑ zum Beitrag ↑
05.04.2022 16:22:23
Also, welche RegEx nimmt man zum Prüfen, ob die Eingabe eine ganze Zahl ist?
Relativiert auf eine Dezimalzahl und in der Bash:

Code: Alles auswählen

#!/bin/bash

read -e zahl
[[ $zahl =~ ^[0-9]+$ ]] || echo $zahl ist keine Zahl

fischig
Beiträge: 3640
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: RegExp-Kurs 01: Motivation

Beitrag von fischig » 05.04.2022 16:51:20

@eggy

Code: Alles auswählen

[0-9]*
Wo unter diesen Zeichen ist jetzt der/ein reguläre(r) Ausdruck? Ich behaupte mal „[]“ ist ein solcher? oder sind's 2: einmal„[“ und einmal „]“? „*“ ist auch einer? 0 - 9 sind's nicht? Ist „-“ auch einer? Wenn ich das jetzt in einen Editor eingebe und ausdrucke: Was habe ich jetzt geschrieben/gedruckt? Reguläre Ausdrücke oder schlicht Zeichen?

Benutzeravatar
Meillo
Moderator
Beiträge: 8818
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: RegExp-Kurs 01: Motivation

Beitrag von Meillo » 05.04.2022 16:57:16

fischig hat geschrieben: ↑ zum Beitrag ↑
05.04.2022 15:55:59
Meillo hat geschrieben:Wuesstest du Fragen, die fuer dich hier Sinn machen wuerden?
Ich benötigte als Anfänger für einen Einstieg eine „rudimentäre“, vorläufige, beispielgestützte Erläuterung dessen, was ich mir unter REs vorstellen soll. Damit hätte ich den Aufgaben evtl. Sinn abgewinnen können.

Meine Motivation für eine Beschäftigung mit REs ist, dass ich mir Shell-Kommandos/Skripte zusammenbasteln kann, die Aufgaben lösen, die gegebene Programme für mich nicht oder nicht zu meiner Zufriedenheit lösen.
Vielleicht kannst du dich mit deinem konkreten Wunsch und deiner Zielrichtung noch etwas gedulden. Natuerlich wollen wir alle gleich zu Beginn schon die Antworten auf unsere Probleme haben, das verhindert dann aber dass man etwas ausholt, Grundlagen legt und eben genau diesen sanften Lernfortschritt geht. Wir koennten schon auch gleich die Felswand hoch zum Gipfel. Damit dabei nicht der Grossteil abgehaengt wird, muessen wir uns halt etwas Zeit fuer einen weiteren Weg nehmen. ;-)


Dennoch bemaengelst du korrekterweise die konkreten Beispiele, die auch bei dieser Einheit moeglich sind. (Das habe ich zuerst nicht gesehen.) Ich versuche hier ja zunaechst mal eine Abgrenzung zur Stringsuche zu taetigen und deren Begrenztheit aufzuzeigen. Statt das nur textuell zu beschreiben koennte man hierfuer auch kleine Aufgaben und Experimente durchfuehren ... und zwar mit `fgrep', das eine Stringsuche umsetzt. Damit koennen wir sehen und erfahren was ich im Text erklaert habe.

Es waere klasse, wenn sich eine freiwillige Person findet, die einen Input-Text erstellt, mit dem man die im Text erklaerten Beispiele mit `fgrep' demonstrieren kann.

Danke, fischig, fuer den Hinweis, der nun zu einer Verbesserung des Kurses gefuehrt hat. :THX:
Use ed once in a while!

fischig
Beiträge: 3640
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: RegExp-Kurs 01: Motivation

Beitrag von fischig » 05.04.2022 17:04:20

Vielleicht kannst du dich mit deinem konkreten Wunsch und deiner Zielrichtung noch etwas gedulden.
Das kann ich nicht nur, das werde ich, denn anders geht's gar nicht, finde ich.
Ich wollte auch nur Rückfragen/Anregungen eines Unbedarften, nichtsdetotrotz Wissbegierigen an den/die Lehrer formulieren. Wenn's dummes Zeug ist, zeigt's mir halt.

Benutzeravatar
Meillo
Moderator
Beiträge: 8818
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: RegExp-Kurs 01: Motivation

Beitrag von Meillo » 05.04.2022 17:10:02

(Edit: @fischig: alles klar. Ich habe deine Reaktion erst gesehen als ich meinen Post schon geschrieben hatte. Er ist aber auch nicht nur an dich, sondern zur Erklaerung an alle gerichtet.)
fischig hat geschrieben: ↑ zum Beitrag ↑
05.04.2022 16:51:20
@eggy

Code: Alles auswählen

[0-9]*
Wo unter diesen Zeichen ist jetzt der/ein reguläre(r) Ausdruck? Ich behaupte mal „[]“ ist ein solcher? oder sind's 2: einmal„[“ und einmal „]“? „*“ ist auch einer? 0 - 9 sind's nicht? Ist „-“ auch einer? Wenn ich das jetzt in einen Editor eingebe und ausdrucke: Was habe ich jetzt geschrieben/gedruckt? Reguläre Ausdrücke oder schlicht Zeichen?
Bitte habt noch ein bisschen Geduld. Akzeptiert es, dass ihr nicht sofort alles versteht. Dies ist ein mehrteiliger Kurs, in dessen *Verlauf* ihr die Dinge verstehen werdet ... nicht schon alles im ersten Motivationskapitel.

(Wenn es euch insgesamt zu langsam ist, dann kann ich auch schneller vorgehen. Allerdings werdet ihr schon bald merken, wie der Berghang steiler wird. ;-) )


Ich faende es auch gut, wenn wir hier nicht schon gross in irgendwelche konkreten *Umsetzungen* von REs einsteigen, weil ich mir sonst das allgemeine Verstaendnis sparen kann. Direkte Umsetzungserklaerungen findet ihr auch sonstwo im Internet, dazu braucht ihr mich nicht. Ich versuche (so natuerlich verstaendlich wie moeglich) zu erklaeren was REs eigentlich sind und wie sie funktionieren. Dazu brauche ich zwei Einheiten mit Grundlagen. Die erste, zum Grund warum wir ueberhaupt etwas haben wollen, was mehr als nur eine Stringsuche ist, ist dieser Thread hier. Am Wochenende kommt die zweite Grundlageneinheit. Anschliessend werden wir uns erste Anwendungen von REs anschauen. Spaetestens dann wird es konkreter und anschaulicher.

Die zweite Einheit wird aber der Teil sein, der den Unterschied zu den meisten anderen Tutorials macht. Darin koennt ihr REs wirklich verstehen ... wenn ihr euch darauf einlasst und offen dafuer seid.
Use ed once in a while!

thoerb
Beiträge: 1677
Registriert: 01.08.2012 15:34:53
Lizenz eigener Beiträge: MIT Lizenz

Re: RegExp-Kurs 01: Motivation

Beitrag von thoerb » 05.04.2022 17:38:22

Meillo hat geschrieben: ↑ zum Beitrag ↑
03.04.2022 19:14:44
1) Welche Suchprobleme hattest du schon, die du entweder nicht loesen konntest oder fuer die du viel Handarbeit investieren musstest?
Ich hatte mal eine Excel-Datei in der standen über fünfzig zwölfstellige Teilenummern aus Zahlen und Buchstaben gemischt. Und diese Teilenummern musste ich mit Teilnummern in verschiedenen Texten abgleichen. Also eine gewisse Menge der Teilnummern kam in den Texten vor und manchmal gab es in den Texten auch Teilnummern die nicht in der Excel-Tabelle vorkamen. Ich musste herausfinden welche.

Hätte ich diese Aufgabe händisch lösen müssen, so wie es gedacht war, wäre ich durchgedreht. :facepalm:

Da ich auf diesem Windows-Notebook keine Rechte hatte, Software zu installieren, habe ich mit HTML zwei Textformulare erstellt. In das eine habe ich die Teilenummern aus der Excel-Tabelle kopiert und in das andere den Text. Und dann habe ich das Ganze per Knopfdruck im Webbrowser mit JavaScript und RegExp abgleichen lassen. :wink:

Und so habe ich diese Sisyphusarbeit dann dank RegExp spielend leicht bewältigt. :D

Benutzeravatar
Meillo
Moderator
Beiträge: 8818
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: RegExp-Kurs 01: Motivation

Beitrag von Meillo » 05.04.2022 18:50:15

thoerb hat geschrieben: ↑ zum Beitrag ↑
05.04.2022 17:38:22
Da ich auf diesem Windows-Notebook keine Rechte hatte, Software zu installieren, habe ich mit HTML zwei Textformulare erstellt. In das eine habe ich die Teilenummern aus der Excel-Tabelle kopiert und in das andere den Text. Und dann habe ich das Ganze per Knopfdruck im Webbrowser mit JavaScript und RegExp abgleichen lassen. :wink:
Das ist eine tolle Erfolgsgeschichte (auch unabhaengig von RegExps)! Die muss ich mir unbedingt merken. :THX:

... auch eine gute Idee, den Browser mit JS zu verwenden, da man damit heutzutage auf quasi jedem System eine maechtige Scriptsprache direkt zur Verfuegung hat. Ich zumindest habe das nicht immer so auf dem Schirm.
Use ed once in a while!

TuxPeter
Beiträge: 1966
Registriert: 19.11.2008 20:39:02
Lizenz eigener Beiträge: MIT Lizenz

Re: RegExp-Kurs 01: Motivation

Beitrag von TuxPeter » 05.04.2022 19:08:28

Wozu ich RE einsetzen wollen könnte?

1. Meine Fotos sind monatsweise in Verzeichnissen sortiert, und ich bemühe mich sehr um sprechende Dateinamen. Natürlich versuche ich das nach einer bestimmten Systematik - welche allerdings zuweilen geändert und vor allem erweitert werden musste, außerdem gibt es ja immer Zweifelsfälle. Gesucht wird jetzt mit find sowie * und ?, könnte mir gut vorstellen diese Suche mit RE zu verbessern.

Bei der Musik ist es ähnlich, wobei die über die CDDB automatisch getaggten ja auch keinem einheitlichen Standard folgen.

2. Ich habe einen Ordner mit Texten, die mal als Merk- und Notizzettel für bestimmte Soft- und Hardwarelösungen dienten. Mittlerweile alles wie Kraut und Rüben durcheinander. Durchsuchen nach Dateinamen, wenn das nicht fruchtet, nach Inhalten, und könnte mir gut vorstellen, dass auch hier etwas RE-Kenntnisse ganz angenehm wären.

3. Anmerkung zu dem Beispiel mit der Plausibilitätsprüfung von Eingaben: Wenn ich als Anwender eine Software vorgesetzt bekomme, kann ich da kaum etwas mit RE vorschalten, was mir das Leben angenehmer machen würde. (Wie grottenhaft beispielsweise die Eingaben von vielen großmächtigen Portalen sind - denke da z.B. an die Finanzamt-Elster oder auch die Bahn - aber das nur mal OT)

Falls ich noch jemals so ein Anwenderzeug programmieren sollte - wie bekomme ich dann die RE's in meine Programmiersprache rein?? Gut, für die bash ist klar, aber sonst?

Davon abgesehen interessieren mich diese Dinge sehr, und in vielen Fällen ist es ja so, dass man erst mit bestimmten Kenntnissen die Anwendungsfälle sieht. Und ich möchte jetzt schon mal den Intitatoren herzlich für ihre Mühe danken!

Christoph Franzen
Beiträge: 195
Registriert: 22.08.2005 19:58:49
Lizenz eigener Beiträge: Artistic Lizenz
Wohnort: Aachen

Re: RegExp-Kurs 01: Motivation

Beitrag von Christoph Franzen » 05.04.2022 20:05:06

TuxPeter hat geschrieben: ↑ zum Beitrag ↑
05.04.2022 19:08:28
Wozu ich RE einsetzen wollen könnte?

1. Meine Fotos sind monatsweise in Verzeichnissen sortiert, und ich bemühe mich sehr um sprechende Dateinamen. Natürlich versuche ich das nach einer bestimmten Systematik - welche allerdings zuweilen geändert und vor allem erweitert werden musste, außerdem gibt es ja immer Zweifelsfälle. Gesucht wird jetzt mit find sowie * und ?, könnte mir gut vorstellen diese Suche mit RE zu verbessern.

Bei der Musik ist es ähnlich, wobei die über die CDDB automatisch getaggten ja auch keinem einheitlichen Standard folgen.

2. Ich habe einen Ordner mit Texten, die mal als Merk- und Notizzettel für bestimmte Soft- und Hardwarelösungen dienten. Mittlerweile alles wie Kraut und Rüben durcheinander. Durchsuchen nach Dateinamen, wenn das nicht fruchtet, nach Inhalten, und könnte mir gut vorstellen, dass auch hier etwas RE-Kenntnisse ganz angenehm wären.
Diese Probleme scheinen mir wie für reguläre Ausdrücke gemacht; besonders die Texte, und hier besonders dann, wenn es ASSCII/Unicode/… also „reiner Text“ ist — dann wäre meine Empfehlung „grep“ auf der Kommandozeile.
TuxPeter hat geschrieben: ↑ zum Beitrag ↑
05.04.2022 19:08:28
3. Anmerkung zu dem Beispiel mit der Plausibilitätsprüfung von Eingaben: Wenn ich als Anwender eine Software vorgesetzt bekomme, kann ich da kaum etwas mit RE vorschalten, was mir das Leben angenehmer machen würde. (Wie grottenhaft beispielsweise die Eingaben von vielen großmächtigen Portalen sind - denke da z.B. an die Finanzamt-Elster oder auch die Bahn - aber das nur mal OT)
Das hatte ich eher so verstanden, als daß das ein typischer Einsatzzweck für Programmierer solcher Anwendungen wäre.
TuxPeter hat geschrieben: ↑ zum Beitrag ↑
05.04.2022 19:08:28
Falls ich noch jemals so ein Anwenderzeug programmieren sollte - wie bekomme ich dann die RE's in meine Programmiersprache rein?? Gut, für die bash ist klar, aber sonst?
Die meisten Sprachen und Bibliotheksfunktionssammlungen (fast alle „ernstzunehmenden“) haben vorgefertigte Funktionen dafür. Bei den Beispielen, die ich genannt hatte, waren 2 Java-Programme (das Fernsehzeugs), da ist eine sehr mächtige Variante im Sprachumfang: java.util.regex. Die zeichnet sich neben dem Standardumfang durch zahlreiche vordefinierte Zeichenklassen aus, so zum Beispiel \p{Space} für ein Leerzeichen beliebiger Art, das paßt also auf ein Zeichen aus der Menge der „leeren Zwischenräume“, also einfache Leerzeichen, nicht Zeilen-umbrechbare, Tabulatoren, schmale Zwischenräume,…; will man beliebigen Leerraum im Druckbild zulassen, macht man einen Stern dahinter — dann ist egal, ob jemand „Deppenleerzeichen“ benutzt hat oder aus Versehen 2 davon getippt. [P.S. ansonsten mag ich Java nicht besonders…]
Christoph

Christoph Franzen
Beiträge: 195
Registriert: 22.08.2005 19:58:49
Lizenz eigener Beiträge: Artistic Lizenz
Wohnort: Aachen

Re: RegExp-Kurs 01: Motivation

Beitrag von Christoph Franzen » 05.04.2022 20:35:16

Meillo hat geschrieben: ↑ zum Beitrag ↑
05.04.2022 17:10:02
(Wenn es euch insgesamt zu langsam ist, dann kann ich auch schneller vorgehen. Allerdings werdet ihr schon bald merken, wie der Berghang steiler wird. ;-) )
Es sollten hier nicht die Leute der Maßstab sein, die bereits von regulären Ausdrücken überzeugt sind: die wurschteln sich auch ohne Deinen Kurs durch. Der größte Mehrwert durch den Aufwand entsteht, wenn möglichst niemand „abgehängt“ wird und es ist im Zweifel besser, sich langweilende Fortgeschrittene abzuhängen; denn die wissen sich dann auch anders zu helfen. Wenn Du einen möglichst großen Summen-Lern- und Multiplikatoren-Effekt anstrebst, dann sollten hier die langsamsten das Tempo bestimmen und das sind die, welche von regulären Ausdrücken noch nichts wissen.
Christoph

inne
Beiträge: 3281
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Interessensabfrage: Wer will RegExps lernen?

Beitrag von inne » 06.04.2022 01:48:15

Stehen Reguläre Ausdrücke eigentlich für sich alleine, oder fallen die in eine Kategorie wie Programmiersprache, Auszeichnungsprache usw.

Benutzeravatar
Meillo
Moderator
Beiträge: 8818
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Interessensabfrage: Wer will RegExps lernen?

Beitrag von Meillo » 06.04.2022 08:28:02

inne hat geschrieben: ↑ zum Beitrag ↑
06.04.2022 01:48:15
Stehen Reguläre Ausdrücke eigentlich für sich alleine, oder fallen die in eine Kategorie wie Programmiersprache, Auszeichnungsprache usw.
REs sind keine Programmiersprache. Sie zeichnen auch keinen Text aus indem sie ihn mit Zusatzinformation anreichern.

Sondern Regulaere Ausdruecke beschreiben einen Menge an Text. Sie sind eine Beschreibung von einer Art von Text, auf den aller moeglicher konkreter Text passt. D.h. ein regulaerer Ausdruck kann alle Schreibweisen des Namens Maier beschreiben. Alle diese verschiedenen Schreibweisen passen/matchen dann auf diesen Regulaeren Ausdruck. Oder ein Regulaerer Ausdruck kann alle Zahlen oder ein bestimmtes Datumsformat oder das Format einer URL beschreiben. Alle konkreten Vorkommen von Zahlen/Datums/URLs passen dann auf diesen Regulaeren Ausdruck.

REs sind also eine kompakte Beschreibung fuer eine ganze Menge konkreter Ausformungen einer bestimmten Art von Information, wie beispielsweise einer Zahl, eines Datums, einer URL, der Namensvarianten von Maier, usw.
Use ed once in a while!

fischig
Beiträge: 3640
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: RegExp-Kurs 01: Motivation

Beitrag von fischig » 06.04.2022 09:26:17

Meillo hat geschrieben:REs sind keine Programmiersprache.
Vermutung, Überlegung: Aber sie gelten jeweils nur innerhalb eines bestimmten Regelsatzes, sprich: einer Programmiersprache?

Beispiel: Alles bei dem ich mich „programmiererisch“ (TRex möge verzeihen) eine wenig auskenne, ist DOS-Pascal
Würdest du den Ausdruck „in [0..9]“ als regulären Ausdruck bezeichnen? (Als ich vor vielen Jahren damit anfing, habe ich mir dafür den Begriff „reservierte Wörter“ gemerkt.)
Weiter spekuliert: wenn das zutrifft, dann sähe der in einem LInux-Shell-Script zumindest etwas anders aus?
Noch weiter spekuliert: Dann machte es keinen Sinn von DEN REs zu sprechen sondern nur von REs in Pascal, C, java, bash etc.? Es mag durchaus Übereinstimmungen geben, das Zeichen * mag ein solcher RE als Platzhalter in vielen/allen bekannten Programmiersprachen sein, zwingend/notwendig ist es das aber nicht.

Ich betone nochmals: Alles Spekulation! In all meinen Internet-Recherchen bezüglich des Begriffs „regulärer Ausdruck“ habe ich keine explizite Verifizierung oder Falsifizierung meiner Überlegungen gefunden.

Benutzeravatar
Meillo
Moderator
Beiträge: 8818
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: RegExp-Kurs 01: Motivation

Beitrag von Meillo » 06.04.2022 09:49:22

Du hast ganz recht, dass es nicht *die* REs gibt, sondern REs genau genommen eine Klasse von Sprachen sind, naemlich den Regulaeren Sprachen (Typ 3 nach Chomsky). Man kann sich viele Regulaere Sprachen ausdenken. Es kann auch viele Arten von Regulaeren Ausdruckssprachen geben und gibt sie auch. Einfaches Globbing (also mit * in der Shell) ist ebenso eine Regulaere Sprache und damit ein Regulaerer Ausdruck wie das was grep/sed/awk/Perl kann.

(Programmiersprachen sind eine maechtigere Art von Sprachen (naemlich Typ 0 nach Chomsky) als Regulaere Sprachen. Mit ihnen kann man Probleme loesen, die man mit Regulaeren Sprachen nicht loesen kann. Wenn man so will ist eine Stringsuche von ihrer Maechtigkeit noch eine Stufe unter Regulaeren Ausdruecken ... oder man koennte auch sagen, eine Stringsuche ist eine Regulaere Sprache, die nur Verkettung als einzigen Operator kennt. Aber hier sind wir nun voll in der Theorie angekommen. Dazu kann eggy dann spaeter mehr sagen.)

Konkret: In dem Kontext hier verwende ich den Begriff ``Regulaere Ausdruecke/Regular Expressions'', wie in der Informatikwelt ueblich, stellvertretend fuer die Art von Regulaeren Ausdruecken, die aus grep/sed/awk/Perl bekannt sind. Man koennte sie auch auf Thompson basierende REs nennen.

In diesen Grundlageneinheiten betrachte ich REs unabhaengig von konkreten Umsetzungen in einzelnen Programmiersprachen und Programmen. Ich betrachte das was ihnen allen gemeinsam ist ... das was also den Kern von Regulaeren Ausdruecken ausmacht. Wie sie konkret in verschiedenen Programmiersprachen und Programmen umgesetzt sind und worin dabei die Unterschiede liegen, dazu kommen wir spaeter. Wir muessen zuerst die Gemeinsamkeiten und die Grundstruktur ueberhaupt greifen und erkennen koennen, bevor wir Unterschiede betrachten koennen.

Ich hoffe, das macht die Situation fuer dich klarer und nicht verwirrender. ;-)
Use ed once in a while!

Benutzeravatar
frox
Beiträge: 968
Registriert: 06.08.2004 16:29:44
Wohnort: Köln

Re: RegExp-Kurs 01: Motivation

Beitrag von frox » 06.04.2022 14:45:56

Es handelt sich also um eine Art Definitionsnorm für Abfragen und Abfragegruppen?
"Stühle und Tische sind Möbel, wir suchen Sitzmöbel.
Damit jeder weiß, was gemeint ist:
So sehen die aus und haben folgenden Suchnamen für alle: Regstuhl."?
Gruß, Fred

Die Zeit salzt alle Wunden

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: RegExp-Kurs 01: Motivation

Beitrag von eggy » 06.04.2022 14:51:38

Meillo hat geschrieben: ↑ zum Beitrag ↑
06.04.2022 09:49:22
Du hast ganz recht, dass es nicht *die* REs gibt, sondern REs genau genommen eine Klasse von Sprachen sind, naemlich den Regulaeren Sprachen (Typ 3 nach Chomsky).
(Wem das zu weit vom Thema ist: einfach ignorieren, das Folgende ist für die Praxis nicht wichtig)

Auch wenn das jetzt extrem weit in die Theorie führt...
Typ 3 äquivalent sind nur die "echten RE". Vieles was in den Spracherweiterungen enthalten ist, klappt nicht ohne look-a-head oder Zähler. Und sowas gibt's so bei einfachen endlichen Automaten noch nicht.

Außerdem würde ich nen RE nicht als Sprache bezeichnen. Ein RE ist eher ein Hilfsmittel, ein Bauteil eines Entscheidungsalgorithmus der entscheiden kann, ob eine Eingabe (die Zeichenfolge, die wir mit dem RE prüfen) zu einer Sprache gehört.

Du hast zum Beispiel die "Sprache der Telefonnummern", das wären alle "Wörter" (erlaubte Aneinanderreihungen von Zeichen) die eine Telefonnr. darstellen: Zahlen, mit ner gewissen Mindestlänge, mit Vorwahlen und ohne, mit Nebenstellen und ohne, etc.
Dann hast Du die "Sprache a", das könnten dann alle "Wörter" sein, die nur aus a's bestehen, beliebiger Länge. (a,aa,aaa,aaaaaaaa,....)
Oder die "Sprache zweier a", dass sind dann alle "Wörter" die aus paaren von a's bestehen. (aa,aaaa,aaaa... aber nicht a, und nicht aaa usw.)
Oder eine "Sprache gleichmäßig mit a", bei denen für jeden anderen Buchstaben auch ein a im Wort enthalten ist.
Oder die "Sprache aller Primzahlen", das wären dann nur "Wörter", die auch Primzahlen sind.
(Natürlich könnte man hier auch die "Sprache der Regulären Ausdrücke" erfinden, das wären dann alle Aneinanderreihungen von Zeichen, die man als regulären Ausdruck nutzen kann. Nur "Wirksamkeit" hat diese Sprache halt nicht.)

Für manche(!) Sprachen kannst Du einen einfachen endlichen Automaten bauen, der entscheiden kann, ob das Wort zu dieser Sprache gehört. Wenn Du für eine Sprache so einen erkennenden Automaten konstruieren kannst, dann ist diese Sprache Teil der sogenannten "Regulären Sprachen".

Bei anderen Sprachen ist die Frage "gehört das Wort zu der Sprache" mit einem einfachen endlichen Automaten aber nicht immer zu lösen.
Denn bei manchen Sprachen braucht es zusätzliche Hilfsmittel, die ein einfacher Automat nicht hat. Wie zum Beispiel "merke Dir ein Zeichen" oder "zähle diese Zeichen mit". Sowas leisten erst Kellerautomaten bzw. Turingmaschinen (die übrigens auch ein wunderbares Thema sind). Diese Art von Berechnungsmaschinen gibt's bei Typ 3 einfach nicht.

Die "ganz einfache Art" von RE ist äquivalent zu endlichen Automaten. Bei manchen Spracherweiterungen stimmt das aber nicht mehr. Mit anderen Worten, Du könntest für diese spezielle Art von RegEx dann keinen passenden endlichen Automaten erstellen. Und damit sind die dann nicht mehr Typ 3 konform.

Wen das Thema interessiert: gibt viele Fachbücher, "Logik für Informatiker" und "Theoretische Informatik - kurzgefasst" (U. Schöning) gehören m.E. zu den etwas lesbareren.

Benutzeravatar
Meillo
Moderator
Beiträge: 8818
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: RegExp-Kurs 01: Motivation

Beitrag von Meillo » 06.04.2022 14:53:40

frox hat geschrieben: ↑ zum Beitrag ↑
06.04.2022 14:45:56
Es handelt sich also um eine Art Definitionsnorm für Abfragen und Abfragegruppen?
"Stühle und Tische sind Möbel, wir suchen Sitzmöbel.
Damit jeder weiß, was gemeint ist:
So sehen die aus und haben folgenden Suchnamen für alle: Regstuhl."?
;-) ... so koennte man sagen.

Natuerlich auf Text bezogen. Es geht also nicht um bestimmte Arten von Moebelstuecken, sondern um bestimmte Arten von Worten bzw. Textabschnitten ... die eben den Kriterien entsprechen, die mit dem Regulaeren Ausdruck formuliert sind.


... Regstuehle! :facepalm: :mrgreen:



Edit: Was eggy auf zwei Seiten immer noch voellig unverstaendlich rumkompliziert hat, hat frox in vier Zeilen einleuchtend und fuer jeden klar ersichtlich auf den Punkt gebracht! Ich denke, frox sollte den Theorieteil uebernehmen, nicht eggy. :-P :mrgreen:


Edit2: Nichts fuer ungut, eggy. Deine Beschreibung ist natuerlich schon gut verstaendlich und hilfreich. ... bloss mit der direkten Klarheit von frox kannst du leider nicht ganz konkurrieren. ;-)
Use ed once in a while!

Antworten