Anzeige
Anzeige
News
Artikel merken

Wenn Entwickler fluchen: Die besten Ressourcen für den Regex-Einstieg

Kein Kraft-, sondern ein regulärer Ausdruck: /[f-k]/. In diesem Artikel geben wir euch einen ersten Einblick in die Welt von „Regex“ – und zeigen euch die wichtigsten Ressourcen zu den „Regular Expressions“.

Von Mario Janschitz
2 Min. Lesezeit
Anzeige
Anzeige

Die regulären Ausdrücke sind nicht zu unterschätzen. (Grafik: t3n)

Wer sich mit den regulären Ausdrücken (kurz: Regex) schon mal beschäftigt hat, ist unter Umständen auf das folgendes Zitat gestoßen:

Some people, when confronted with a problem, think „I know, I’ll use regular expressions.“ Now they have two problems.Jamie Zawinski

Anzeige
Anzeige

Wahrscheinlich gibt es selten ein Zitat, das derart zutrifft wie dieses. Und in diesem Artikel lest ihr, wie ihr das hier angesprochene „zweite Problem“ lösen könnt – indem wir euch gute Quellen zum Nachlesen und selbst ausprobieren zeigen. Doch zuerst zur Frage: Was sind Regex eigentlich?

Regex: Die Sprache, die Sprachen bändigt

regex

Dieses Regex findet Buchstaben zwischen „f“ und „k“. (Grafik: t3n)

Mit regulären Ausdrücken könnt ihr aus einer Menge von Zeichen durch die Angabe eines Musters gewisse Zeichen auswählen. So ist es beispielsweise möglich, dass ihr euch alle Leerzeichen in einem Absatz auswählt oder alle Wörter, die mit einem bestimmten Buchstaben beginnen. Dabei ist Regex kein „Suchen und Ersetzen“ im eigentlichen Sinne – kann in einigen Editoren aber dafür benutzt werden – sondern viel mehr die Möglichkeit ein wiederverwendbares Muster zu beschreiben mit dem ihr schnell und effizient mit Zeichen oder Zeichenketten interagieren könnt.

Anzeige
Anzeige

Bei Regex geht es darum, Muster zu beschreiben, die dann wie ein Filter auf einzelne Zeichen oder Zeichenketten wirken. Den gesamten Umfang von Regex innerhalb eines Artikels zu beschreiben, würde definitiv den Rahmen sprengen – wir werden aber einen Regex-Guide für euch nachliefern.

Anzeige
Anzeige

Ihr müsst herausfinden ob ein String eine E-Mail-Adresse ist? Mit regulären Ausdrücke könnt ihr das. Die Frage, die ihr euch stellen müsst, ist: Wie erkennt man eine E-Mail-Adresse, die man noch nicht kennt? Es dreht sich also alles um eine Definition des zu Suchenden.

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@
(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|edu|gov|mil|
biz|info|mobi|name|aero|asia|jobs|museum)\b

Dieser Code würde euch E-Mail-Adressen liefern, allerdings muss er aktualisiert werden, sobald neue TLDs vorgestellt und eingeführt wurden. Wobei gesagt werden muss, dass Aufgrund der Komplexität von E-Mail-Adressen, Regex nicht geeignet ist, um eine zuverlässige Validierung durchzuführen. Das obige Beispiel zeigt euch nur, wie ihr ein Muster aus einem String herausfiltern könnt – wie ihr eure Ausdrücke aber dann letztendlich nutzt bleibt euch überlassen.

Anzeige
Anzeige

Regex muss aber nicht immer so kompliziert sein, denn schon die Möglichkeit, alle Zahlen, Kommata oder Strichpunkte zu finden, kann hilfreich sein. In diesem Fall würde der reguläre Ausdruck so aussehen: [0-9,;]+

Ressourcen zu Regex

Mit RegExr könnt ihr schnell und einfach sehr viel über Regex lernen. Das Beste daran: Ihr könnt eure Expressions live testen. Seit dem wir das letzte mal über Regex und RegExr berichtet haben, hat sich das Tool massiv verbessert. Für die Puristen kann ich Regular-Expressions.com empfehlen. Auf dieser Website findet ihr so ziemlich alles, was ihr über Regex wissen müsst. Die nachstehende Liste führt euch zu diversen Tutorials, die euch helfen können, besser mit Regex umzugehen:

Im nachfolgenden Guide zu Regex werde ich tiefer auf die regulären Ausdrücke, ihre Metacharacters, Multipliers, die Literale et cetera eingehen.

Anzeige
Anzeige

Kennt ihr noch andere Tutorials, Ressourcen oder Bücher?

Mehr zu diesem Thema
Fast fertig!

Bitte klicke auf den Link in der Bestätigungsmail, um deine Anmeldung abzuschließen.

Du willst noch weitere Infos zum Newsletter? Jetzt mehr erfahren

Anzeige
Anzeige
16 Kommentare
Bitte beachte unsere Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Björn Dorra

Auch en sehr schönes Online-Tool um Regex Expressions zu testen:

http://rubular.com

– Björn Dorra, Founder http://netzaktiv.de

Antworten
Olaf Barheine

Oje, das Thema ruft bestimmt bei vielen Informatikern ungute Gefühle in der Magengegend hervor, die im Grundstudium von den Profs mit regulären Ausdrücken, regulären Mengen, regulären Sprachen, rechtslinearer Grammatik, Chomsky-Hierachie etc. gequält worden sind. ;-)

Antworten
Andi

Oh ja, da kommen wirklich ungute Gefühle in mir hoch :) glücklicherweise findet sich zu so gut wie jedem Regex Problem auch schon eine copy&paste Lösung im Netz.

Antworten
Björn Dorra

Auch en sehr schönes Online-Tool um Regex Expressions zu testen:

rubular.com

— Björn Dorra, Founder http://netzaktiv.de

Antworten
Christian Baer

Hiermit kann man sich Regular Expressions zusammenklicken:

http://txt2re.com/

Sehr zu empfehlen, ich kann nicht mehr ohne :)

Antworten
JBraun

Reguläre Ausdrücke ist mit das Beste, was mir in einer Programmiersprache passiert ist. Selbst mit den Grundlagen kommt man schon ziemlich weit und steht erst einmal ziemlich hilflos da, wenn er mal wieder zu einer Programmiersprache ohne Regex greifen muss.

Aber Ihre wunderbaren Beispiele schrecken jeden Anfänger ab. Das „einfache“ Beispiel ^[0-9,;]+$ trifft nur bei Zeichenketten zu, die ausschließlich die genannten Zeichen enthalten (^Anfang und Ende$). Um su prüfen ob EINE Ziffern- und Strichpunktfolge in der Zeichenkette zu finden ist, wäre [0-9,;]+ die Wahl, um ALLE Folgen z.B. mit Perl zu finden, braucht man eine (g)lobale Suche mit Modifier:
@fundliste = $string=~/[0-9,;]+/g

Das Email Beispiel ist auch nicht vollständig, wer sich von der kompletten Regex abschrecken lassen will, der schaue hier:
http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html

Antworten
Urutar

Herauszufinden, ob ein String eine Email-Addresse ist, ist nicht trivial… und schon gar nicht mit regulären Ausdrücken. Das liegt u.a. daran, dass es erstaunlich viele Sonderfälle gibt, die für eine valide Email-Addresse eigentlich zugelassen sind (siehe auch http://stackoverflow.com/a/201378).

Im Allgemeinen ist es einfach keine gute Idee, zu versuchen, alle Email-Addressen nur per regulärem Ausdruck zu validieren, da reguläre Ausdrücke bei steigender Komplexität aufwändig zu debuggen und warten sind. Zusätzlich sollte einfach überprüft werden, ob die Email-Addresse tatsächlich existiert und demjenigen gehört, der diese verwendet, indem eine Bestätigungs-Email versendet wird.

Vermutlich wurden die Informationen in diesem Artikel zum Teil hier gefunden: http://www.regular-expressions.info/email.html

Antworten
Mario Janschitz

Hallo @JBraun
Von der Verwendung, der von dir verlinkten Methode aus RFC 822, wird — genauso wie bei RFC 5322 — abgeraten. Das von mir gewählte Beispiel erkennt zwar E-Mail-Adressen, dient aber nur als Beispiel wie man Muster eines Strings erkennen kann und nicht als best practice. Denn, E-Mail-Adressen abzufragen, ist absolut nicht trivial und sollte daher nicht über Regex gemacht werden. Ich habe den Absatz dementsprechend angepasst um Missverständnisse vorzubeugen. Code sollte aber ohnehin nicht kopiert werden, ohne zu wissen was er bedeutet.

Danke für den Hinweis, ich habe die line boundaries entfernt.

Antworten
Elv

Herrje. Wer mit „sed“ und „ex“ gearbeitet hat, für den ist das dich kein großes Thema. :-)

Antworten
Mario Janschitz

@Martin Bless Danke für deine Links!

Antworten
H. Nydegger

Hier eine Webseite die verschiedene Tools zur Erstellung und Bearbeitung von Regex bietet http://www.regexmagic.com/

Antworten
Bernhard Lipp

Ansich ja kein schlechter Artikel aber was mir fehlt ist eine gute deutschsprachige Quelle. Es ist zwar wahr, dass man als Programmierer auch englisch können sollte/muss. Das muss allerdings nicht bedeuten, dass man keine deutschen Quellen verwenden dürfte. Da der Artikel deutsch ist sollten auch weiterführende Infos in deutsch verfügbar sein. Wäre sehr nett wenn jemand was ergänzen könnte.

Antworten
JBraun

@Bernhard Lipp, manchmal ist Wiki dein Freund. Abgesehen von der umfangreichen Übersicht unter „Reguläre Ausdrücke in der Praxis“ findet sich dort ein Link auf einen Einführungskurs auf Deutsch:
http://www.regenechsen.de/phpwcms/index.php?regex_allg

Antworten
Abbrechen

Melde dich mit deinem t3n Account an oder fülle die unteren Felder aus.

Bitte schalte deinen Adblocker für t3n.de aus!
Hallo und herzlich willkommen bei t3n!

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team von mehr als 75 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Schon jetzt und im Namen der gesamten t3n-Crew: vielen Dank für deine Unterstützung! 🙌

Deine t3n-Crew

Anleitung zur Deaktivierung
Artikel merken

Bitte melde dich an, um diesen Artikel in deiner persönlichen Merkliste auf t3n zu speichern.

Jetzt registrieren und merken

Du hast schon einen t3n-Account? Hier anmelden

oder
Auf Mastodon teilen

Gib die URL deiner Mastodon-Instanz ein, um den Artikel zu teilen.

Anzeige
Anzeige