RegExp-Kurs 01: Motivation

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
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!

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

Re: RegExp-Kurs 01: Motivation

Beitrag von eggy » 06.04.2022 15:42:44

Meillo hat geschrieben: ↑ zum Beitrag ↑
06.04.2022 14:53:40
Ich denke, frox sollte den Theorieteil uebernehmen, nicht eggy. :-P :mrgreen:
gerne :P

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 15:56:43

Oh, Danke für die Blumen. :lol:
Ich werde sicher öfter stark vereinfacht nachfragen. Ich bin ja (friedhofs)blond. *g*
Vielleicht mache ich dann ganz am Schluss eine Zusammenfassung für mich selbst und poste die dann ggf..
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 » 06.04.2022 19:04:35

Ist Chomsky der Chomsky?

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: RegExp-Kurs 01: Motivation

Beitrag von JTH » 06.04.2022 19:11:18

fischig hat geschrieben: ↑ zum Beitrag ↑
06.04.2022 19:04:35
Ist Chomsky der Chomsky?
Japp.
Manchmal bekannt als Just (another) Terminal Hacker.

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

Re: RegExp-Kurs 01: Motivation

Beitrag von eggy » 06.04.2022 19:11:51

Ja, die Sprachklassen kommen aus Richtung der Linguistik.

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 19:24:06

Lang lang ist's her: Seine Generative Transformationsgrammatik war in der Sprachwissenschaft der Renner um 1970. :wink:

rhHeini
Beiträge: 2312
Registriert: 20.04.2006 20:44:10

Re: RegExp-Kurs 01: Motivation

Beitrag von rhHeini » 06.04.2022 21:55:00

Ich bin zuletzt bei einigen Skripten zur Umbenennung von Media-Dateien mit RegEx in Berührung gekommen. Verstehe nur Bahnhof, stehe voll auf Kriegsfuss mit diesem Thema. Und das obwohl ich meine ersten Programmiererfahrungen Mitte der 70er gemacht habe (Algol und Fortran auf Lochkarten an einer TR440). Bin aber kein Programmierer, muss mich aber viel mit SW und Debuggen zur HW-Steuerung auseinandersetzen.

Bei den Skripten habe ich mir hier und in weiteren Foren helfen lassen, ich staune immer nur über die Lösungen der Experten.

Und moderne Tools die ich bei der Arbeit verwende haben auch Anflüge von RegEx für Suchen/Ersetzen, z.B. Notepad++.

Werde mitlöessen und schauen ob ich jetzt noch was Lernen kann.

Rolf

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

Re: RegExp-Kurs 01: Motivation

Beitrag von inne » 07.04.2022 09:16:25

Meillo hat geschrieben: ↑ zum Beitrag ↑
06.04.2022 09:49:22
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.
Eine hast du schon genannt (Einfaches Globbing). Welche gibt es noch, die erwähnenswert sind?
Ich kenne zu dem Thema nur die Beispiele die hier ab und an im Forum erarbeitet werden und den Wikipedia Artikel (der alles schön als Referenz zusammenfasst): https://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck (Ohne weiterführede Links).
Eine Liste welche Reguläeren Ausdruckssprachen es gibt, scheint die deutsche Wikipedia nicht zu haben? Sind das nur die Erweiterungen der REs wie du sie Anfangs genannt hast?

PS: Programmiersprachelement

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 » 07.04.2022 17:01:01

rhHeini hat geschrieben: ↑ zum Beitrag ↑
06.04.2022 21:55:00
Und moderne Tools die ich bei der Arbeit verwende haben auch Anflüge von RegEx für Suchen/Ersetzen, z.B. Notepad++.
Der hat sogar echte reguläre Ausdrücke.
Christoph

rhHeini
Beiträge: 2312
Registriert: 20.04.2006 20:44:10

Re: RegExp-Kurs 01: Motivation

Beitrag von rhHeini » 07.04.2022 21:58:12

Christoph Franzen hat geschrieben: ↑ zum Beitrag ↑
07.04.2022 17:01:01
rhHeini hat geschrieben: ↑ zum Beitrag ↑
06.04.2022 21:55:00
Und moderne Tools die ich bei der Arbeit verwende haben auch Anflüge von RegEx für Suchen/Ersetzen, z.B. Notepad++.
Der hat sogar echte reguläre Ausdrücke.
Ich weiss, aber nutzen kann ich das nicht weil ich das Zeuge nicht kapier ... jedenfalls wenns komplexer wird.

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

Re: RegExp-Kurs 01: Motivation

Beitrag von Meillo » 07.04.2022 22:08:08

rhHeini hat geschrieben: ↑ zum Beitrag ↑
07.04.2022 21:58:12
Christoph Franzen hat geschrieben: ↑ zum Beitrag ↑
07.04.2022 17:01:01
rhHeini hat geschrieben: ↑ zum Beitrag ↑
06.04.2022 21:55:00
Und moderne Tools die ich bei der Arbeit verwende haben auch Anflüge von RegEx für Suchen/Ersetzen, z.B. Notepad++.
Der hat sogar echte reguläre Ausdrücke.
Ich weiss, aber nutzen kann ich das nicht weil ich das Zeuge nicht kapier ... jedenfalls wenns komplexer wird.
... weil du es noch nicht kapierst. ;-)

Einfach beim Kurs mitmachen. :THX:
Use ed once in a while!

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

Re: RegExp-Kurs 01: Motivation

Beitrag von Meillo » 08.04.2022 06:58:20

@all: Es waere klasse, wenn sich eine Person oder mehrere finden wuerden, die die Inhalte dieses Threads ein bisschen zusammenfassen/-kopieren wuerden ins Wiki. https://wiki.debianforum.de/Regul%C3%A4 ... r%C3%BCcke


Mein Plan ist es, den naechsten Teil schon in der ersten Wochenendhaelfte online zu stellen.
Use ed once in a while!

Benutzeravatar
smutbert
Moderator
Beiträge: 8331
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: RegExp-Kurs 01: Motivation

Beitrag von smutbert » 08.04.2022 12:15:06

Hab einmal begonnen: https://wiki.debianforum.de/Regul%C3%A4 ... scher_Kurs und die Seite auch auf (bis jetzt vor allem eggys) Baustelle verlinkt.
(ich habe noch keine Vorstellung wie viele Seiten das am Ende werden)

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 » 08.04.2022 17:50:09

Nun suchen wir nach dem Ortsnamen ‚Au‘. Das ist zwar nur eine Suche, aber sie liefert uns leider auch ‚Auge‘, ‚Auto‘, usw.
In DOS-Pascal mache ich das so:

Code: Alles auswählen

FUNCTION enthaelt(einKette:STRING;prfKette:STRING;genau:BOOLEAN):BOOLEAN;
{ Die Funktion prüft, ob ein Zeichen oder eine Zeichenkette in einer anderen
  enthalten ist und gibt entsprechend ja o. nein zurück. Mit dem Param. genau
  kann die Groß- und Kleinschreibung ausgeschaltet werden.
      einKette: String, in dem gesucht werden soll. (längerer String)
      prfKette: Suchbegriff, der in einKette enthalten sein soll.
                (kürzerer String)
      genau:  wenn wahr, wird Groß- u. Klein berücksichtigt.
}

VAR
  tmpEin,
  tmpPrf : STRING; { Suchbegriff }
  zaehl : BYTE;

BEGIN
IF genau = ja_ THEN BEGIN
  tmpEin := einKette;tmpPrf := prfKette;END
 ELSE BEGIN
  tmpEin := fGross(einKette);tmpPrf := fGross(prfKette);
END{IF};
entHaelt := ne_;
FOR zaehl := 1 TO len(tmpEin)-(len(tmpPrf)-1) DO
  IF COPY(tmpEin,zaehl,len(tmpPrf)) = tmpPrf THEN BEGIN
    enthaelt := ja_;
    BREAK;
  END{IF};
{ENDFOR};
END;                     { F. enthaelt }
Wir wollen aber nur Treffer bei denen ‚Au‘ ein eigenständiges Wort ist
liefert die Funktion zwar (noch) nicht, könnt' ich aber locker einpflegen ,wenn gewünscht.
In einem Logfile interessieren uns alle Zeilen, die mit ‚incoming‘ beginnen. Wenn ‚incoming‘ irgendwo sonst innerhalb der Zeile vorkommt interessiert es uns nicht. Eine solche Unterscheidung ist mit einer Stringsuche nicht möglich.
Mache mich anheischig, mit Pascal eine Stringsuche zu formulieren, die das kann.
Ich habe, wie schon mehrfach gesagt, keine Ahnung von REs. Nutze ich die trotzdem?

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 » 08.04.2022 19:05:05

fischig hat geschrieben: ↑ zum Beitrag ↑
08.04.2022 17:50:09
DOS-Pascal
Welches genau? Als ich zur Schule ging, hatten wir da Borlands Turbo-Pascal; inzwischen kommt ja Freedos mit Free Pascal daher.
Christoph

Antworten