Das DFDE lernt RegExps
Das DFDE lernt RegExps
Hoi Leute,
jetzt geht's los mit unserem RegExp-Kurs.
In diesem Ueberblicksthread werde ich alle Kursteile verlinken. Jeweils am Wochenende werde ich einen neuen Teil als separaten Thread einstellen. In den Threads kann das auch nachgefragt und diskutiert werden.
Euch alle moechte ich bitten, die Inhalte ins Wiki zu uebernehmen und dort in geeigneter Weise zusammenzutragen.
Inhalt
Einfuehrung
01. Motivation
02. Metazeichen & Escaping
Extended Regular Expressions (EREs)
03. egrep
04. Konkatenation, Alternation, Unterausdruecke
05. Zeichenklassen
06. Punkt, Quantoren
07. Anker, Praezedenz, Zusammenfassung
Verwendung in Programmiersprachen
Python
Go
Pascal
C++/Qt
R
Vorrede
Regulaere Ausdruecke, Regular Expressions, RegExps, RegEx, Regechsen, REs -- das sind alles Synonyme fuer ein maechtiges Ausdrucksmittel bei der Arbeit mit Text. So abschreckend sie durch ihr kryptisches Erscheinen auf viele wirken, so hilfreich und arbeitserleichternd sind sie denjenigen, die sie verstehen und anzuwenden wissen.
Dieser Kurs soll den anderen, die bislang noch keine oder nur wenig Ahnung von REs haben, helfen, sie zu verstehen und zukuenftig selber auch anwenden zu koennen. Dafuer ist ein Lernprozess noetig. REs zu verstehen erfordert ein bestimmtes Denken und Betrachten, das dieser Kurs vermitteln will. Wie alles Neue ist das erstmal ein Aufwand und ein bisschen anstrengend, jedoch gewinnt man damit auch etwas. Eine gewisse Anstrengung ist halt noetig, um einen Erkenntnisgewinn zu erlangen. Damit will ich nicht sagen, dass das Lernen von REs besonders schwierig waere, aber man muss sich darauf einlassen, sich vom Bekannten loesen und offen fuer etwas Neues sein. Es wird sich lohnen.
Mein Ziel ist es, ein Verstaendnis von REs zu vermitteln. Dazu ist eine gewisse Theorie noetig, da die reine Praxis kein Verstehen schafft. Zugleich ist es mir wichtig, diese Theorie aus einem ganz einfachen Nachdenken ueber die Dinge aufzubauen. Von sprachwissenschaftlicher Theorie halte ich mich bestmoeglich fern. (Die wird aber spaeter noch nachgeliefert werden, um einen weiteren Betrachtungswinkel des gleichen Themas zu eroeffnen, und die Funktionsweise von RegExp-Engines aus informatischer Sicht verstaendlich zu machen.)
Da es mehrere Varianten von REs gibt, die sich oberflaechlich etwas unterscheiden, konzentriere ich mich darauf, die generelle Funktionsweise zu erklaeren, die in allen Faellen die gleiche ist. Hat man diese verstanden, so kann man die konkrete Umsetzung in der jeweiligen konkreten RE-Variante schnell anhand einer Manpage oder Webrecherche nachschlagen. Bei konkreten Beispielen orientiere ich mich primaer an EREs (POSIX Extended Regular Expressions), da diese, meiner Meinung nachm die am einfachsten verstaendliche und die konsistenteste Variante sind. Sie werden z.B. in den Programmen `egrep' (bzw. `grep -E') und `awk' verwendet.
Lizenz
Alle meine Inhalt sehe ich als gemeinfrei an, bzw. wenn eine Lizenz gewuenscht wird, dann stehen sie unter CC0. Ihr koennt damit also machen was ihr wollt.
jetzt geht's los mit unserem RegExp-Kurs.
In diesem Ueberblicksthread werde ich alle Kursteile verlinken. Jeweils am Wochenende werde ich einen neuen Teil als separaten Thread einstellen. In den Threads kann das auch nachgefragt und diskutiert werden.
Euch alle moechte ich bitten, die Inhalte ins Wiki zu uebernehmen und dort in geeigneter Weise zusammenzutragen.
Inhalt
Einfuehrung
01. Motivation
02. Metazeichen & Escaping
Extended Regular Expressions (EREs)
03. egrep
04. Konkatenation, Alternation, Unterausdruecke
05. Zeichenklassen
06. Punkt, Quantoren
07. Anker, Praezedenz, Zusammenfassung
Verwendung in Programmiersprachen
Python
Go
Pascal
C++/Qt
R
Vorrede
Regulaere Ausdruecke, Regular Expressions, RegExps, RegEx, Regechsen, REs -- das sind alles Synonyme fuer ein maechtiges Ausdrucksmittel bei der Arbeit mit Text. So abschreckend sie durch ihr kryptisches Erscheinen auf viele wirken, so hilfreich und arbeitserleichternd sind sie denjenigen, die sie verstehen und anzuwenden wissen.
Dieser Kurs soll den anderen, die bislang noch keine oder nur wenig Ahnung von REs haben, helfen, sie zu verstehen und zukuenftig selber auch anwenden zu koennen. Dafuer ist ein Lernprozess noetig. REs zu verstehen erfordert ein bestimmtes Denken und Betrachten, das dieser Kurs vermitteln will. Wie alles Neue ist das erstmal ein Aufwand und ein bisschen anstrengend, jedoch gewinnt man damit auch etwas. Eine gewisse Anstrengung ist halt noetig, um einen Erkenntnisgewinn zu erlangen. Damit will ich nicht sagen, dass das Lernen von REs besonders schwierig waere, aber man muss sich darauf einlassen, sich vom Bekannten loesen und offen fuer etwas Neues sein. Es wird sich lohnen.
Mein Ziel ist es, ein Verstaendnis von REs zu vermitteln. Dazu ist eine gewisse Theorie noetig, da die reine Praxis kein Verstehen schafft. Zugleich ist es mir wichtig, diese Theorie aus einem ganz einfachen Nachdenken ueber die Dinge aufzubauen. Von sprachwissenschaftlicher Theorie halte ich mich bestmoeglich fern. (Die wird aber spaeter noch nachgeliefert werden, um einen weiteren Betrachtungswinkel des gleichen Themas zu eroeffnen, und die Funktionsweise von RegExp-Engines aus informatischer Sicht verstaendlich zu machen.)
Da es mehrere Varianten von REs gibt, die sich oberflaechlich etwas unterscheiden, konzentriere ich mich darauf, die generelle Funktionsweise zu erklaeren, die in allen Faellen die gleiche ist. Hat man diese verstanden, so kann man die konkrete Umsetzung in der jeweiligen konkreten RE-Variante schnell anhand einer Manpage oder Webrecherche nachschlagen. Bei konkreten Beispielen orientiere ich mich primaer an EREs (POSIX Extended Regular Expressions), da diese, meiner Meinung nachm die am einfachsten verstaendliche und die konsistenteste Variante sind. Sie werden z.B. in den Programmen `egrep' (bzw. `grep -E') und `awk' verwendet.
Lizenz
Alle meine Inhalt sehe ich als gemeinfrei an, bzw. wenn eine Lizenz gewuenscht wird, dann stehen sie unter CC0. Ihr koennt damit also machen was ihr wollt.
Use ed once in a while!
Re: Das DFDE lernt RegExps
https://wiki.debianforum.de/Reguläre_Ausdrücke Literatur, Linkliste, Helferlein, etc
https://wiki.debianforum.de/Reguläre_Au ... scher_Kurs Zusammenfassung des praktischen Kurses
https://wiki.debianforum.de/Reguläre_Au ... scher_Kurs Zusammenfassung des praktischen Kurses
Re: Das DFDE lernt RegExps
Kurz zur Info: Ostern und das Privatleben sind mir in den letzten Tagen etwas in die Quere gekommen darum ist die naechste Kurseinheit noch nicht veroeffentlicht. Habt noch ein bisschen Geduld.
Use ed once in a while!
-
- Beiträge: 3721
- Registriert: 24.12.2019 12:25:08
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: z.Z. Scopello
Re: Das DFDE lernt RegExps
Ich melde mich bis frühestens Juni ab. Ich habe z.Z. zuviel anderes um die Ohren.
Re: Das DFDE lernt RegExps
Reguläre_Ausdrücke --> Wiki-Artikel formatiert (Überschriften, Baustellenhinweis, Aufzählungen statt Blöcke für die Linklisten) und die noch fehlende Links auf Teil 4, 5 und 6 nachgetragen.Meillo hat geschrieben:03.04.2022 18:59:23Euch alle moechte ich bitten, die Inhalte ins Wiki zu uebernehmen und dort in geeigneter Weise zusammenzutragen.
Reguläre_Ausdrücke_-_Lösungen --> Zugehörige Forums-Diskussionen verlinkt (Teil 1 - 4). Kapitel zu 4 -6: Überschriften, Verlinkung auf zugehörige Forums-Diskussionen und Aufgabenstellungen hinzugefügt bzw. von der Wiki-Seite "Reguläre Ausdrücke - praktischer Kurs“ kopiert.
Aus den Forums-Diskussionen die richtigen Lösungen ins Wiki (Reguläre_Ausdrücke_-_Lösungen) zusammenzutragen traue ich mir (zumindest momentan) nicht zu .
Re: Das DFDE lernt RegExps
Zur weiteren Planung:
Das Kapitel EREs/egrep ist nun abgeschlossen.
eggy hat den Theorieteil zwar schon fast fertig, hat aber gerade keine freie Zeit ihn durchzufuehren, darum verschieben wir das noch ein bisschen.
Nach Pfingsten starten wir nun mit einem Kapitel in dem praktisch gezeigt wird wie man REs in diversen Programmiersprachen nutzt. Die Idee ist wiederum, im Wochenrhythmus neue Teile bereitzustellen und zwar je einen Teil zu einer Programmiersprache. Es geht nicht darum, die Programmiersprache zu lernen, sondern wie eine Person, die die Sprache schon kann, in ihr REs nutzen kann. Das muss nicht vollumfaenglich sein, sondern soll nur mal einen Einstieg bieten und ein Gefuehl dafuer vermitteln.
Hier seid ihr nun gefragt! Da es fuer jede Sprache immer wieder das gleiche Schema sein wird, wird der Aufwand recht ueberschaubar sein. Wir brauchen also Freiwillige, die hier Sprachen uebernehmen.
Die ersten zwei Freiwilligen habe ich schon gefunden:
- TRex mit Python
- paedubucher mit Go
Wer von euch kann eine weitere Sprache beitragen?
Antwortet einfach in den Thread. -- Wer zuerst kommt, mahlt zuerst.
Das Kapitel EREs/egrep ist nun abgeschlossen.
eggy hat den Theorieteil zwar schon fast fertig, hat aber gerade keine freie Zeit ihn durchzufuehren, darum verschieben wir das noch ein bisschen.
Nach Pfingsten starten wir nun mit einem Kapitel in dem praktisch gezeigt wird wie man REs in diversen Programmiersprachen nutzt. Die Idee ist wiederum, im Wochenrhythmus neue Teile bereitzustellen und zwar je einen Teil zu einer Programmiersprache. Es geht nicht darum, die Programmiersprache zu lernen, sondern wie eine Person, die die Sprache schon kann, in ihr REs nutzen kann. Das muss nicht vollumfaenglich sein, sondern soll nur mal einen Einstieg bieten und ein Gefuehl dafuer vermitteln.
Hier seid ihr nun gefragt! Da es fuer jede Sprache immer wieder das gleiche Schema sein wird, wird der Aufwand recht ueberschaubar sein. Wir brauchen also Freiwillige, die hier Sprachen uebernehmen.
Die ersten zwei Freiwilligen habe ich schon gefunden:
- TRex mit Python
- paedubucher mit Go
Wer von euch kann eine weitere Sprache beitragen?
Antwortet einfach in den Thread. -- Wer zuerst kommt, mahlt zuerst.
Use ed once in a while!
-
- Beiträge: 61
- Registriert: 25.11.2010 20:56:44
Re: Das DFDE lernt RegExps
Ich kann die Sprachen C++11 (std::regex) und C++/Qt (QRegularExpression) übernehmen.
Re: Das DFDE lernt RegExps
Klasse! Vielen Dank.matthiasklein hat geschrieben:01.06.2022 08:22:26Ich kann die Sprachen C++11 (std::regex) und C++/Qt (QRegularExpression) übernehmen.
Dann bist du als drittes nach TRex und paedubucher dran.
Btw: Falls jemand noch unsicher ist und zoegert, sich oeffentlich festzulegen, dann kann man mich auch per PM anschreiben.
Use ed once in a while!
Re: Das DFDE lernt RegExps
Hi,
habe gerade das Beispielprogramm für die Anwendung der bei FreePascal mitgelieferten Unit "RegExpr" um ein paar weitere Beispiele erweitert und zeige das dann auch gerne hier vor.
habe gerade das Beispielprogramm für die Anwendung der bei FreePascal mitgelieferten Unit "RegExpr" um ein paar weitere Beispiele erweitert und zeige das dann auch gerne hier vor.
Re: Das DFDE lernt RegExps
Klasse!TuxPeter hat geschrieben:03.06.2022 11:45:38Hi,
habe gerade das Beispielprogramm für die Anwendung der bei FreePascal mitgelieferten Unit "RegExpr" um ein paar weitere Beispiele erweitert und zeige das dann auch gerne hier vor.
Dann bist du als Vierter dran.
Use ed once in a while!
Re: Das DFDE lernt RegExps
TuxPeter und matthiasklein tauschen ihre Wochen.
Naechste Woche kommt dann also TuxPeter mit FreePascal. Danach matthiasklein mit C++ und Qt.
Dann habe ich noch eine Person in der Hinterhand, die sich noch nicht ganz sicher ist.
Weitere Freiwillige waeren sehr erwuenscht.
Insbesondere Java, PHP und Javascript waeren toll, weil diese Sprachen sehr verbreitete sind. Koennte sich das jemand vorstellen? (Es muss auch nicht ganz so umfangreich ausgearbeitet sein wie TRex und paedubucher das gemacht haben.)
Wie alle, die einen Teil vorbereitet haben, bestaetigen werden, lernt man dabei selber auch eine Menge, selbst wenn man zuvor der Ansicht war sich schon auszukennen.
Naechste Woche kommt dann also TuxPeter mit FreePascal. Danach matthiasklein mit C++ und Qt.
Dann habe ich noch eine Person in der Hinterhand, die sich noch nicht ganz sicher ist.
Weitere Freiwillige waeren sehr erwuenscht.
Insbesondere Java, PHP und Javascript waeren toll, weil diese Sprachen sehr verbreitete sind. Koennte sich das jemand vorstellen? (Es muss auch nicht ganz so umfangreich ausgearbeitet sein wie TRex und paedubucher das gemacht haben.)
Wie alle, die einen Teil vorbereitet haben, bestaetigen werden, lernt man dabei selber auch eine Menge, selbst wenn man zuvor der Ansicht war sich schon auszukennen.
Use ed once in a while!
Re: Das DFDE lernt RegExps
Ich bin mir jetzt sicher, dass ich einen Kursteil zu regulären Ausdrücken in R machen möchte. Bin aktuell dabei, den Kurs-Part zu erstellen .Meillo hat geschrieben:20.06.2022 09:58:05Dann habe ich noch eine Person in der Hinterhand, die sich noch nicht ganz sicher ist.
Falls kein anderer Programmiersprachen-Kursteil mehr ansteht, würde ich "meinen" Kursteil nächstes Wochenende posten. Seit ihr damit einverstanden?
Re: Das DFDE lernt RegExps
Ja, natuerlich. Ich freue mich sehr darauf.tegula hat geschrieben:04.07.2022 11:25:05Ich bin mir jetzt sicher, dass ich einen Kursteil zu regulären Ausdrücken in R machen möchte. Bin aktuell dabei, den Kurs-Part zu erstellen .
Falls kein anderer Programmiersprachen-Kursteil mehr ansteht, würde ich "meinen" Kursteil nächstes Wochenende posten. Seit ihr damit einverstanden?
Use ed once in a while!
Re: Das DFDE lernt RegExps
Zur weiteren Planung:
Nach tegula habe ich keine weiteren Freiwlligen mehr. Ich schlage darum vor, dass wir den RE-Kurs dann erstmal ruhen lassen. Wenn einer Person irgendwann mal noch einfaellt, dass sie doch gerne noch einen Teil zu irgendeiner weiteren Sprache machen will, dann ist das ja jederzeit moeglich.
Im Winter oder so koennten wir dann mal wieder ein neues Kapitel starten, es stehen ja noch ein paar Themen aus (Automatentheorie, PCRE-Features, BREs/sed, Zeitperformance, ...). Oder auch irgend einen anderen Kurs. Ich finde, dass diese Kursidee richtig gut funktioniert hat. Das sollten wir auch in Zukunft immer mal wieder machen.
Fuer den diesjaehrigen Mitmach-Adventskalender gabe es auch schon Ideen, an den einzelnen Tagen was um das Thema REs zu machen. Ihr koennt euch ja schon mal Gedanken machen ... Ende November ist schneller da als man manchmal denkt.
Nun aber erstmal weiterhin viel Vergnuegen mit C++/Qt und naechste Woche dann mit R.
Nach tegula habe ich keine weiteren Freiwlligen mehr. Ich schlage darum vor, dass wir den RE-Kurs dann erstmal ruhen lassen. Wenn einer Person irgendwann mal noch einfaellt, dass sie doch gerne noch einen Teil zu irgendeiner weiteren Sprache machen will, dann ist das ja jederzeit moeglich.
Im Winter oder so koennten wir dann mal wieder ein neues Kapitel starten, es stehen ja noch ein paar Themen aus (Automatentheorie, PCRE-Features, BREs/sed, Zeitperformance, ...). Oder auch irgend einen anderen Kurs. Ich finde, dass diese Kursidee richtig gut funktioniert hat. Das sollten wir auch in Zukunft immer mal wieder machen.
Fuer den diesjaehrigen Mitmach-Adventskalender gabe es auch schon Ideen, an den einzelnen Tagen was um das Thema REs zu machen. Ihr koennt euch ja schon mal Gedanken machen ... Ende November ist schneller da als man manchmal denkt.
Nun aber erstmal weiterhin viel Vergnuegen mit C++/Qt und naechste Woche dann mit R.
Use ed once in a while!
-
- Beiträge: 58
- Registriert: 26.06.2023 09:09:40
- Lizenz eigener Beiträge: GNU General Public License
Re: Das DFDE lernt RegExps
Hallo,
hier die gängisten Programme in bash:
hier die gängisten Programme in bash:
Code: Alles auswählen
#diese Varinante von grep ist nicht so cpu lastig
#unterstützt jedoch auch nur die nötigsten Regex Befehle
cat /home/myuser/myfile | grep 'MeinRegex'
#der erweiterte Regex Satz von grep damit geht so ziemlich alles
cat /home/myuser/myfile | grep -E 'MeinRegex'
#Suchen und Ersetzen mit sed und regex.
#hier mit dem Flag für Groß und Klienschreibung ignorieren (i)
#und alle Funde ersetzen (g)
#man kann auch mehrmals -e verwenden um mehre Sachen zu und zu ersetzen
cat /home/myuser/myfile | sed -e 's/SuchRegex/ersetze mit/ig'
#mit awk nach Zeilen suchen deren erste Spalte ein Regex matcht (tabs als Spalten sperator .tsv)
cat /home/myuser/myfile | awk -F '\t' '$1 ~ /MeinRegex/ {print $0}'
Zuletzt geändert von VS2FreeUsers am 26.06.2023 11:29:26, insgesamt 1-mal geändert.
vs2-free-users community
#vs2-free-users #VS2FreeUsers
#vs2-free-users #VS2FreeUsers
- cosinus
- Beiträge: 3527
- Registriert: 08.02.2016 13:44:11
- Lizenz eigener Beiträge: GNU General Public License
- Wohnort: Bremen
Re: Das DFDE lernt RegExps
Das sieht aber stark nach useless use of cat ausVS2FreeUsers hat geschrieben:26.06.2023 10:31:43Code: Alles auswählen
cat /home/myuser/myfile | grep 'MeinRegex'
Und IIRC muss man grep dann auch mit -E aufrufen:
Code: Alles auswählen
grep -E 'MeinRegex' /home/myuser/myfile
Das würde auch gehen:
Code: Alles auswählen
</home/myuser/myfile grep -E 'MeinRegex'
-
- Beiträge: 58
- Registriert: 26.06.2023 09:09:40
- Lizenz eigener Beiträge: GNU General Public License
Re: Das DFDE lernt RegExps
Hi,cosinus hat geschrieben:26.06.2023 11:26:01Das sieht aber stark nach useless use of cat ausVS2FreeUsers hat geschrieben:26.06.2023 10:31:43Code: Alles auswählen
cat /home/myuser/myfile | grep 'MeinRegex'
Und IIRC muss man grep dann auch mit -E aufrufen:
Code: Alles auswählen
grep -E 'MeinRegex' /home/myuser/myfile
Das würde auch gehen:
Code: Alles auswählen
</home/myuser/myfile grep -E 'MeinRegex'
du hast natürlich Recht,man kann auch die Files direkt angeben. cat hält es halt hier einheitlich und zeigt, das man das Resultat auch pipen kann um es miteinander zu verknüpfen.
Laut man ist es auch ohne -E ein Regex oder?
Code: Alles auswählen
root@srv27595:~# man grep | head
GREP(1) User Commands GREP(1)
NAME
grep, egrep, fgrep, rgrep - print lines that match patterns
SYNOPSIS
grep [OPTION...] PATTERNS [FILE...]
grep [OPTION...] -e PATTERNS ... [FILE...]
grep [OPTION...] -f PATTERN_FILE ... [FILE...]
root@srv27595:~#
vs2-free-users community
#vs2-free-users #VS2FreeUsers
#vs2-free-users #VS2FreeUsers