BLOG

Lesen Sie die neuesten Nachrichten von Billigence und aus der Welt der Technologie und Datenanalyse.
Vergessen Sie nicht, sie per E-Mail zu abonnieren.

REGEX – eine Einführung in die Welt der regulären Ausdrücke

RegEx (aus dem Englischen Regular Expression) ist eine Abkürzung, die ins Englische als regulärer Ausdruck (auch REGEXP oder RATIONAL EXPRESSION genannt) übersetzt werden kann, der ein Verfahren darstellt, bei dem der Text, dessen Länge unterschiedlich sein kann, mit einer Folge ausgewählter Zeichen (= Muster) verglichen und dann die Übereinstimmung des gesuchten Textes mit diesem Muster ausgewertet wird.

Kommt Ihnen das bekannt vor? Sie denken vielleicht sofort an die Funktion „Suchen“, die wir alle kennen, z. B. mit MS Word. Ja, es ist auch sehr ähnlich wie RegEx, wo wir unser eigenes Muster (Suchzeichen) erstellen und es auf unser Dokument oder die Stelle anwenden, wo wir das Muster finden wollen. Das Prinzip ist dasselbe, nur dass der reguläre Ausdruck nichts hervorhebt, sondern den Text in der Ausgabe wiedergibt.

WIE DIE SUCHE FUNKTIONIERT

Die Suche basiert auf Zeichen, nicht auf ganzen Wörtern oder Sätzen (die aus Zeichen zu einem Muster zusammengesetzt werden). Im folgenden Text:

suchen wir nach dem Wort „Unternehmen“. Die Suche kann auf zwei Arten angegangen werden – geschäftlich und technisch.

Aus unternehmerischer Sicht ist es klar, dass unser Ziel darin besteht, das Wort „
Unternehmen
“ zu finden und alle Wörter, nach denen wir nicht suchen, zu überspringen. Dies würde funktionieren, wenn RegEx wortbasiert wäre, was es nicht ist. Technisch gesehen basiert die Suche auf einzelnen Zeichen, wir suchen also nach dem Zeichen „c“, gefolgt von „o“, „m“, „p“, „a“, „n“, „y“, und so funktioniert RegEx tatsächlich.

Das Ergebnis ist bei beiden Ansätzen dasselbe.

RegEx baut auf diesen Grundlagen auf, enthält aber eine Reihe von Funktionen, die diese grundlegende Suchlogik erweitern.

WELCHE ERGEBNISSE KANN REGEX LIEFERN?

RegEx erweitert den Suchprozess um benutzerdefinierte Funktionen. Schauen wir uns die grundlegenden Verbesserungen an. Im vorangegangenen Abschnitt wurde beschrieben, wie man den Begriff „Unternehmen“ anhand der Zeichenfolge c-o-m-p-a-n-y findet. In RegEx ist es jedoch möglich, die Suche durch die Verwendung von so genannten Sonderzeichen anzupassen. „Spielveränderer“. Diese Funktionen ermöglichen es Ihnen, ein Muster zu erstellen, das verglichen werden kann, ohne dass Sie einen bestimmten Text eingeben müssen:

RegEx besteht nicht nur aus Zahlen, Groß- und Kleinbuchstaben und anderen Zeichen, sondern auch aus Kombinationen dieser Zeichen. Nachfolgend finden Sie eine Kombination und Beschreibung nützlicher Beispielbereiche.

WAS IST EIN MUSTER?

Ein Muster kann als eine Schablone aus Buchstaben, Zahlen, Symbolen und verschiedenen Zeichen betrachtet werden, wie in der Funktion FIND, aber das Muster basiert auf einer spezifischen Syntax, die das Übereinstimmungsprinzip ändert. Während Sie bei der Funktion FINDEN eingeben können, wonach Sie suchen, können Sie bei einem regulären Ausdruck die Form, die Länge des Textes und die Anzahl der Vorkommen des Zeichens, das Sie zurückgeben möchten, eingeben.

Der Unterschied zu FIND besteht darin, dass Sie nicht nach etwas Bestimmtem suchen, sondern einen Text auf der Grundlage einer Vorlage zurückgeben möchten. Sie haben z. B. eine Liste von Telefonnummern und möchten sie alle im gewünschten Format „+XXX-XXX XXX XXX XXX“ zurückgeben. Sie geben also ein Muster ein, das den gesamten Text zurückgibt, wobei das erste Zeichen das „+“-Symbol ist, gefolgt von 3 Ziffern, dann ein „Bindestrich“ und weiter mit 9 Ziffern, die in Dreiergruppen angeordnet und durch ein Leerzeichen “ “ getrennt sind.

WIE MAN REGEX SCHREIBT

Dieses Kapitel beschreibt die grundlegende Syntax von Mustern. Jedes Zeichen im Muster kann das Ergebnis verändern. Es macht einen Unterschied, ob Sie () anstelle von [] oder {} eingeben, die Groß-/Kleinschreibung wird ebenfalls beachtet. Zum besseren Verständnis werden im Folgenden die grundlegenden Bereiche des regulären Ausdrucks beschrieben, wobei die Rückgabe des regulären Ausdrucks gelb hervorgehoben ist.

Gruppen (Gruppen)

Gruppen sind Sequenzen von Symbolen, die in eckigen Klammern „()“ angeordnet sind; die darin enthaltenen Zeichen werden mit dem Operator AND zusammengefügt (anstelle von Bereichen, für die der Operator OR verwendet wird, siehe unten).

Texteingabe:

Fall 1  – einen bestimmten Text finden

Muster: (20)

Ergebnis:

ist der Rückgabetext „2020“, weil wir nach einer „2“ gefolgt von einer „0“ suchen. Dies gilt nur für 2020 („20“ wurde zweimal gefunden). Wäre der Text anstelle von „2020“ „2021“, wäre die Rückgabe nur „20“, weil der reguläre Ausdruck das Zeichen „2“ findet, was in Ordnung ist, und dann fragt, ob das nächste Zeichen „0“ ist.


Fall 2
– Finden Sie den Text, der Folgendes enthält

In einem regulären Ausdruck ist das Sonderzeichen ein Punkt „.“, was bedeutet, dass es durch ein anderes Zeichen (Buchstabe, Zahl, Leerzeichen, .usw.) ersetzt werden kann, so dass nur das Zeichen mit „a“ und mehr zurückgegeben wird.

Texteingabe:

Muster: (a.)

Ergebnis:

Das Ergebnis zeigt, dass das letzte Vorkommen von „a“ nicht zurückgegeben wird, weil ein weiteres Zeichen fehlt (es entspricht nicht dem Muster).

Baureihen (Baureihen)

Die Bereiche definieren eine Reihe von Zeichen, die durch einen ODER-Ausdruck oder einen Bindestrich „-“ getrennt sind und die jeweils verglichen werden. Dieser Satz wird in eckigen Klammern geschrieben […]

Es gibt mehrere Möglichkeiten, um das gewünschte Ergebnis zu erzielen:

Texteingabe:


Fall 3
– Auflistung der Zeichen in eckigen Klammern

Muster: [abcd1234: ]

Im obigen Beispiel waren die Rückgabezeichen „a“ oder „b“ oder „c“ oder „d“ oder „1“ oder „2“ oder „3“ oder „4“ oder „:“ oder Leerzeichen, wobei die Reihenfolge der Zeichen keine Rolle spielte (wegen des fehlenden „-„-Zeichens wird der Operand OR zwischen den Zeichen verwendet). Beachten Sie, dass der reguläre Ausdruck zwischen Groß- und Kleinschreibung unterscheidet; wenn wir Großbuchstaben einschließen wollen, müssen diese ebenfalls in eckige Klammern gesetzt werden.

Ergebnis:


Fall 4
– den Zeichenbereich festlegen

Muster: [a-d1-4: ]

Hier schreiben wir nicht alle erforderlichen Zeichen, sondern erstellen mit dem Bindestrich „-“ einen Bereich (ohne den Bindestrich werden die Elemente durch den ODER-Operator getrennt, siehe Fall 3), a-d bedeutet, dass wir alle Zeichen von „a“ bis „d“ haben wollen, denn Zahlen und Großbuchstaben haben die gleiche Logik, d. h. [A-D] oder [1-9]Gleichzeitig können Sie mit dem ODER-Operanden „:“ und Leerzeichen wie in „Fall 3“ kombinieren und „:“ und “ “ in das Ergebnis aufnehmen.


Fall 5
– „Verbotene“ Zeichen (ausgenommen Zeichen)

Muster: [^e-z^5-9^A-Z^0^)]

Das Schlüsselzeichen ist „^“, was bedeutet, dass es „zusätzlich“ zu den aufgezählten Zeichen (aus Fall 3) mit einem Bereich kombiniert werden kann (siehe Fall 4). Das Zeichen „^“ sollte vor jedem Zeichen oder Bereich eingefügt werden, der übersprungen werden soll, z. B. ^e-z bedeutet, dass alle Buchstaben im Bereich „e-z“ übersprungen werden, dann ist es ^5-9, womit die Zahl von “5 bis 9“ übersprungen wird, dasselbe gilt für das Überspringen der Großbuchstaben “A-Z“, „“)“ und „0“.

Vordefinierte Zeichengruppen (Zeichenklassen)

Gruppen und Bereiche sind nützlich, so dass einige von ihnen „Abkürzungen“ erhalten, wenn wir einen klaren und einfachen regulären Ausdruck haben wollen, siehe die folgende Liste (diese Liste ist nicht vollständig, sie enthält nur die am häufigsten verwendeten).

Diese „Abkürzungen“ ersetzen einige Muster wie z. B.. „\w“ steht für „[a-zA-Z]“.

Fall 6

Texteingabe:

Verankerungen (Verankerungen)

Verankerungen geben die erste/letzte Übereinstimmung für jede Zeile zurück (mehrere durch einen Zeilenumbruch getrennte Texte). Für dieses Beispiel haben wir den folgenden Text.

Text eingeben:

123

321

132


Fall 7
– Ende der Zeichenfolge (zu durchsuchender Text)

Muster: $3

Ergebnis:

Nur das entsprechende Zeichen am Ende der Zeile wird zurückgegeben, da es durch „$“ verankert ist. Wenn wir das Dollar-Symbol löschen, werden alle „3er“ aus allen Zeilen, in denen es vorkommt, zurückgegeben.


Fall 8
– Anfang einer Zeichenkette (zu durchsuchender Text)

Muster: ^3

Ergebnis:

Dies ist der gleiche Fall wie in Fall 7, aber wir fixieren den Anker am Anfang jeder Zeile. Entfernt man das „^“, so erhält man wieder alle Zeilen, in denen die Zahl 3 vorkommt. Sie werden sich fragen, warum „^“ jetzt als Anker fungiert und nicht wie in Fall 3 als Ausnahme. Das liegt daran, dass dieses Muster keine runden oder eckigen Klammern enthält.

Quantoren (Quantifizierer)

Gibt an, wie oft eine Gruppe, ein Zeichen oder ein Bereich im Suchtext durchsucht werden muss, um Übereinstimmungen zu finden.

Wenn wir „(abcabcabc)“ schreiben, bedeutet das, dass wir nach „abc“ suchen, das dreimal in der Zeile vorkommt, aber wir sollten versuchen, unser Muster leicht lesbar zu machen, also können wir das Symbol verwenden, um zu schreiben, wie oft „{}“ und die darin enthaltene Zahl in dem Muster vorkommen sollen, z. B. „(abc){3}“ ist äquivalent zum vorherigen Fall.


Fall 9
– feste Anzahl von Treffern

Texteingabe:

Muster: (20){2}

Ergebnis:

In diesem Beispiel suchen wir nach Zeichen „20“, die zweimal hintereinander stehen. Wenn wir die Anzahl der Vorkommen auf {3} ändern, wird nichts gefunden, aber wenn wir sie auf {1} ändern, wird das Ergebnis dasselbe sein wie bei {2}, denn mit {1} sagen wir, dass wir nach Zeichen „20“ suchen, in denen es einmal vorkommt, aber das nächste Vorkommen wird diese Bedingung auch erfüllen.

Die Zahl in {} ist nur dann obligatorisch, wenn wir den genauen Bereich oder die Anzahl der Vorkommen angeben wollen, andernfalls können wir „Abkürzungen“ für einige Aktionen verwenden, bei denen die „{}“-Symbole nicht benötigt werden, siehe Liste unten

Eingabetext (für Fall 10-14):


Fall 10
– null oder mehr Übereinstimmungen (oft mit dem Zeichen „.“ verwendet, siehe unten)


Fall 11
– ein oder mehrere Treffer


Fall 12
– Mindestanzahl von Treffern


Fall 13
– keine oder eine Übereinstimmung


Fall 14
– Reichweite der Treffer (vom Minimum bis zum Maximum)

Metaznaks (Flucht-Zeichen)

Wir haben dieses Thema im Kapitel „Vordefinierte Zeichengruppen“ ein wenig angeschnitten. Sie haben sich vielleicht gefragt, als Sie „\w“ sahen, wie wir einen regulären Ausdruck dafür erstellen, wenn es sich um zwei Zeichen handelt, die bereits für die Aktion „Wort(e) zurückgeben“ gesperrt sind. Die Lösung ist das Escape-Zeichen, das genauso funktioniert wie in den meisten Programmiersprachen. Wenn Sie noch nie davon gehört haben, dann ist es ein Backslash „\“. Wenn wir also „\\w“ eingeben, bedeutet dies, dass wir nach „\w“ suchen, weil die Abkürzung „Backslash“ durch den ersten Backslash in dem Muster verboten ist, mit anderen Worten, der erste Backslash sagt, dassder nächste (der in der Folge ist) ignoriert werdensoll.

Fall 15

aber wenn wir \\\w eingeben, dann deaktiviert zuerst der Backslash die „Abkürzungen“, aber der reguläre Ausdruck fährt fort, er wird suchen und das Ergebnis wird das gleiche sein, siehe das nächste Beispiel

Fall 16

Fall 17

SOUHRN

In diesem Artikel möchten wir Ihnen einige grundlegende Informationen über reguläre Ausdrücke und deren Funktionsweise geben und einige Beispiele für grundlegende Muster zeigen. Die Möglichkeiten von RegEx sind fast grenzenlos, es hängt alles von Ihren Bedürfnissen und Ihrer Fähigkeit ab, Muster miteinander zu kombinieren. Dies ist nicht immer einfach, daher empfehlen wir die Verwendung von Online-Validatoren für reguläre Ausdrücke, um Ihr Muster zu überprüfen, z. B. Hier https://regex101.com/.

Autor des Artikels: Petr Holík, BI-Berater, Billigence

Lesen Sie auch

KATEGORIE