Regular Expressions

Regular Expressions sind Zeichen oder Code, mit Hilfe dessen man Text durchsuchen kann, um bestimmte Elemente zu finden.

Regular Expression online testen und bearbeiten

Am einfachsten kann man Regular Expressions verstehen, wenn man sich einfache Beispiele anschaut und diese selbst verändert und testet. Dafür gibt es einen super online Editor „RegExr“, mit dessen Hilfe man Regular Expressions schreiben und ausführen kann. Er bietet sogar die Möglichkeit, gefundene Elemente zu ersetzen.

Die Regular Expression „[0-9]+“ findet alle Zahlen im Text und markiert diese.

Regular Expression in Notepad++

Der Texteditor notepad ++ bietet die Möglichkeit Text mit Hilfe von Regular Expressions zu durchsuchen und zu verändern. Dazu öffnet man das Suchfenster und aktiviert „Reguläre Ausdrücke“:

In diesem Beispiel wollte ich in jeder Zeile am Anfang eine Klammer auf „(“ hinzufügen. Dazu kann man „^“ nutzen, dies steht in den Regulären Ausdrücken für den Satzanfang. Vor der Klammer muss man einen Backspace setzen, damit notepad ++ weiß, dass es ein zu schreibendes Zeichen ist und kein Regulärer Ausdruck.

Cheatsheet

Hier werden einige Regular Expression Ausdrücke aufgeführt, die ich oft verwende:

Regular ExpressionErklärungBeispiel
^= Anfang des Textes(^)Hallo mein Name ist Richard.
$= Ende des TextesHallo mein Name ist Richard.($)
[A-Z]{1}= findet nur einen allein stehenden GroßbuchstabenTTT und tTt
x(?=…)= look ahead modifier – schaut sich die Zeichen nach dem aktuellen an.
z.B.: „x(?=[0-9])“ sucht im Text nach einem „x“ gefolgt von Zahlen von 0-9
asfx5sdfsdf
,(?=[0-9]{4})= sucht eine Zeichenkette, in der ein Komma gefolgt von 4 Zahlen vorkommen. Selektiert nur das Komma, da das „?=“ ein look ahead modifier ist, der die Zeichen nach einem Komma anschaut.Sophie,Tsui,2013-02-06,1

Beispiele

Tabellen und Spalten aus einem SQL CREATE Statement parsen

In einem Javascriptprojekt SQLverine musste ich für alle möglichen Tabellen den Fremdschlüssel bekommen, um die miteinander verbundenen Spalten farblich zu markieren. Hier kann man mit regulären Ausdrücken super die benötigten Informationen bekommen.

Ziel war es die rot markierten Spaltennamen und Tabellennamen zu identifizieren:

CREATE TABLE "schueler" (
	"id"	INTEGER NOT NULL UNIQUE,
	"vorname"	TEXT NOT NULL,
	"nachname"	TEXT NOT NULL,
	"geburtsdatum"	TEXT,
	"klasse_id"	INTEGER NOT NULL,
	PRIMARY KEY("id" AUTOINCREMENT),
	FOREIGN KEY("klasse_id") REFERENCES "klassen"("id")
);
gesuchte Informationregular expression
FOREIGN KEY(„klasse_id„)(?<=FOREIGN KEY\(").+?(?=")
Hier wird der look behind Code ?<= genutzt, um genau den Text zu finden, der nach FOREIGN KEY(“ kommt. Dann soll alles bis zu einem “ markiert werden.
REFERENCES „klassen(?<=REFERENCES ").+?(?=")
Hier wird wieder der look behind Code ?<= genutzt, um REFERENCES “ zu finden. Danach soll wieder alles bis “ markiert werden.
(„id„)(?<=(REFERENCES )("[a-z].+")(\(")).+(?="\))
Um eindeutig die „id“ in Klammern zu bekommen, muss im look behind Code alles ausgehend von REFERENCES nachgeschaut werden. Da man den Tabellennamen (hier „klassen“) nicht kennt wird ein Platzhalter eingesetzt: ("[a-z].+") dieser sucht ein “ und Zeichen von a-z bis wieder ein “ erreicht wird.

Links