Community Spring Cleaning week is here! Join your fellow Maveryx in digging through your old posts and marking comments on them as solved. Learn more here!
Free Trial

Knowledge Base

Lernen Sie von den Profis.

Tool Mastery Serie | RegEx

Community_Admin
Alteryx
Alteryx
Erstellt

Dieser Artikel gehört zu unserer Tool Mastery Serie, einer Zusammenstellung von Beiträgen in der Wissensdatenbank mit verschiedenen Arbeitsbeispielen für Designer-Tools. Er befasst sich mit der Nutzung des RegEx-Tools auf unserem Weg, den Umgang mit Alteryx Designer zu erlernen:

 RegEx.png

Das RegEx-Tool ist eine Art Schweizer Taschenmesser für das Parsen in Alteryx. Sie können es auf vielerlei Arten einsetzen, um Dinge schneller oder effektiver zu erledigen, aber selbst wenn Sie nur die Klinge verwenden, ist es trotzdem noch sehr praktisch. Oft brauchen Sie nicht mehr, aber wenn Sie sich die Zeit nehmen, die anderen Werkzeuge in Ihrem Messer kennenzulernen, werden Sie sehen, dass Sie damit praktisch alles erledigen können.

 

mr bean.pngmacgyver.jpg

Vor und nach der Verwendung des RegEx-Tools.

 

RegEx: Was hat es zu bieten?

 

RegEx ist eine Abkürzung für Regular Expressions (reguläre Ausdrücke), die Sie sich wie eine andere Sprache vorstellen können. Sie verwendet Zeichen wie jede andere Sprache, aber in regulären Ausdrücken werden diese Zeichen verwendet, um Übereinstimmungen in Abfolgen von Buchstaben, Zahlen oder Zeichen in einem Text zu finden. In dieser Sprache geht es vor allem darum, Muster zu erkennen.

 

Menschen sind sehr gut in der Mustererkennung. Sehen Sie sich beispielsweise den folgenden Textblock an:

 

3345 Michelson Drive, Suite 400, Irvine, CA 92612

12303 Airport Way, Suite 250, Broomfield, CO 80021

Two North Riverside Plaza, Suite 1430, Chicago, IL 60606

 

Sie würden müheloslos erkennen, dass dies Adressen sind und welcher Teil eine Hausnummer oder ein Stadtname ist. Aber ein Computer würde nur einen Textblock sehen und nicht überprüfen, ob es sich um eine Adresse handelt oder nicht. Mit RegEx können wir nützliche Daten in Texten „erkennen". Lassen Sie uns diesen Text in eine RegEx-Version übersetzen:

 

3345 ^/d+  ^steht für den Zeilenanfang in RegEx, daher ist es sinnvoll, dieses Zeichen in Ihrem Anfangsmuster zu verwenden. Hier verwenden wir das Muster /d, das für „beliebiges numerisches Zeichen“ (0-9) steht. Das + Zeichen bedeutet, dass wir den vorherigen Ausdruck ein- oder mehrmals abgleichen möchten. Da der erste Teil der Adresse eine Hausnummer ist, können wir eine Nummer beliebiger Länge haben.
    Zum Abgleich von Straßennamen müssen wir zulassen, dass unser Ausdruck mehrere Wörter von Zeichen aufnimmt, einschließlich einer beliebigen Anzahl von Leerzeichen, da Straßennamen oft aus mehr als einem Wort bestehen. Dazu können wir beispielsweise nach Allem suchen, das wir nicht erwarten, indem wir [^...] verwenden. Diese Gruppierungsnotation sucht nach „allen Zeichen, die hier nicht aufgelistet sind“. Das Ergebnis ist dann die ein- oder mehrmalige Übereinstimmung mit jedem Zeichen, das keine Nummer ist.
Suite 400 .* Der nächste Teil der Adresse ist eine Wohnungs- oder Suitenummer, die nicht immer vorhanden ist, und unter Umständen verschiedene Namenskonventionen haben kann. Um einen flexiblen Ausdruck zu definieren, der mit allem übereinstimmt, was wir hier sehen, verwenden wir . um jedes „beliebige Zeichen“ abzugleichen. Das Symbol * steht dann dafür, dass wir mit einem beliebigen Zeichen keine oder mehrere Übereinstimmungen finden können.
Irvine [^/d]+ Wie bereits erwähnt bedeutet dies "ein beliebiges Symbol, dass keine Nummer ist".
CA /u{2} Zur Abgleichung mit dem Bundesstaat verwenden wir /u, um nach „einem beliebigen Großbuchstaben“ zu suchen. Da wir hier immer eine Sequenz aus zwei Buchstaben erwarten, können wir die Länge der Übereinstimmung angeben, indem wir {...} nach unserem Ausdruck verwenden, oder „Suche nach zwei beliebigen Großbuchstaben“.
92612 /d{5}$ Die Postleitzahl liegt als 5-stellige Zahl vor, daher können wir beispielsweise nach „fünf numerischen Zeichen“ suchen. Anschließend hängen wir ein $ an, um anzugeben, dass wir an dieser Stelle das Ende der aktuellen Zeile erwarten. 

 

cheat.png

Hilfreiche Tools

 

RegEx-Ausdrücke verwenden eine Vielzahl von Symbolen, aber Alteryx hat einen praktischen kleinen „Spickzettel“ direkt im Tool für Sie vorbereitet.

 

Damit haben Sie alles, was Sie brauchen, um mit RegEx loszulegen, und wie auch in Alteryx werden Sie feststellen, dass Sie einen Ausdruck für ein bestimmtes Muster auf vielerlei Arten erstellen können. Machen Sie sich keine Gedanken um die Details und verbringen Sie etwas Zeit damit, Dinge wie früher durch Ausprobieren zu lernen.

 

trial and error.jpg

Keine Sorge, ich habe eine normale Ausbildung absolviert.

 

Ausführlichere Hinweise zu RegEx finden Sie unter Boost-Extended Format String Syntax (in englischer Sprache) sowie in der RegEx-Perl-Syntaxanleitung.

 

Alteryx hat die RegEx-Funktionen in vier Methoden unterteilt: Übereinstimmung, Parse, Ersetzen und Tokenize. Unsere Hilfedokumentation für diese Methoden ist sehr umfangreich.

 

Übereinstimmung

 

Die Methode der Übereinstimmung überprüft lediglich, ob eine Zeichenfolge durch den angegebenen regulären Ausdruck beschrieben werden kann und gibt ein Ergebnis von Wahr oder Falsch zurück. Lassen Sie uns die Ausdruckselemente aus der oben gezeigten Tabelle verwenden, um unsere Adressen abzugleichen. Sie können einen langen Ausdruck erstellen, indem Sie die Ausdrücke zusammenfügen und Leerzeichen /s sowie Kommas , an den richtigen Stellen einfügen.

 

regex1.JPG

 

Die ersten beiden Adressen stimmen mit diesem Ausdruck überein, aber die dritte Adresse weicht vom erwarteten Format ab und liefert einen Fehler. Aufgrund einer unklaren Norm für Gebäude, die einen Namen mit ihrer Adresse gemeinsam haben, wird die Straßennummer ausgeschrieben, und unser regulärer Ausdruck kann diese daher nicht abgleichen.

 

Der Schlüssel zum Schreiben guter RegEx ist, diese Ausnahmen in Ihren Daten abzusehen und sie innerhalb des Ausdrucks zu berücksichtigen. Um den Wert „two“ in dieser Adresse abzugleichen, lassen Sie uns einen weiteren Ausdruck verwenden, der nur dann ausgewertet wird, wenn dieser keine Übereinstimmung ergibt. Die meisten Adressen beginnen mit Nummern, aber falls nicht, sucht dieser Ausdruck stattdessen nach einem Wort. So sieht unser Ausdruck aus:

 

(?:^/d+)|(?:^/w+)

 

Diese Logik ist einfacher als sie aussieht und verwendet lediglich zwei zusätzliche RegEx-Symbole. Das Pipe-Symbol I steht für „oder“. Beispiel: a|b überprüft zuerst, ob a übereinstimmt, und falls nicht, wird nach b gesucht. Das zweite Symbol ist (?:...), auch bekannt als unmarkierte Gruppe. Damit können wir diese Segmente für die oder-Operation gruppieren.

 

 

regex2.JPG

 

Unsere erste Gruppe (?:^/d+) funktioniert also wie zuvor, und falls ein Fehler auftritt, versucht der Ausdruck, eine Übereinstimmung mit der zweiten Gruppe (?:^/w+) zu finden. Auf diese Weise finden wir die ausgeschriebene Version unserer Adresse ohne Probleme.

 

Mehr zur Funktion der Übereinstimmung:

Bonus: RegEx können auf vielerlei Arten strukturiert werden. Schreiben Sie uns in den Kommentaren eine bessere Alternative für (?:^/d+)|(?:^/w+). Warum ist Ihre Alternative besser?

 

Parse

 

Übereinstimmungen sind hilfreich für Überprüfungen, aber die Parse-Methode ist die eigentliche Stärke von RegEx und ermöglicht das Extrahieren nützlicher Informationen aus einem Textblock. Das RegEx-Tool erleichtert uns diese Aufgaben. Wir setzen lediglich Klammern (...) um die Elemente herum, die wir extrahieren möchten. Damit erstellen wir markierte Gruppen, das Gegenstück zu unseren unmarkierten Gruppen weiter oben (?:...).

 

regex3.JPG

 

Wenn Sie die Klammern eingeben, werden die Gruppen in einem Fenster mit Ausgangsfeldern im Stil des Auswählen-Tools angezeigt, und Sie können Ihre Felder umbenennen und die Datentypen ändern.

 

Mehr zur Parse-Funktion :

 

Ersetzen

 

Wie Sie gesehen haben, ist die Parse-Methode lediglich eine Erweiterung der Übereinstimmung, die uns erlaubt, Elemente vom Text zu extrahieren und sie ordentlich in einer neuen Spalte anzuordnen. Aber was passiert, wenn wir dieses Konzept erweitern und uns fragen:, „Wie könnte ich Dinge wieder einfügen“? An dieser Stelle kommt die Ersetzen-Methode ins Spiel.

 

Mit der Ersetzen-Methode können wir Komponenten unserer Zeichenfolge parsen, ersetzen und sogar neu anordnen. Dazu erstellen wir markierte Gruppen, um dem RegEx-Tool in einer allgemein verständlichen Sprache mitzuteilen, was es ersetzen soll und wo ...

 

dollah bills

 

Das schicke Faultier hat völlig recht. Wir können Dollarzeichen $ zusammen mit Ziffern verwenden, um die einzelnen markierten Gruppen exakt zu definieren. $1, $2 und $3 beziehen sich beispielsweise auf die erste, zweite bzw. dritte markierte Gruppe. Wenn wir also alle Städte und Bundesstaaten aus unserer Adressenliste auslesen möchten, können wir den Ausdruck $4, $5 verwenden.

 

regex4.JPG

 

Beachten Sie, dass wir hier unser eigenes Komma und ein Leerzeichen einfügen konnten, indem wir sie in das Textfeld eingegeben haben. Die Ersetzen-Methode ist sehr flexibel und ist auch im Formel-Tool über die Funktion Regex_Replace verfügbar.

 

Mehr zur Ersetzen-Methode:

 

Tokenize

 

RegEx ist praktisch, wenn wir Daten in einer schicken, geordneten Liste erhalten, aber was passiert, wenn die Daten formlos aus einem API-Aufruf oder einer Datenbank als einzelner Textblock ausgekippt werden?

 

3345 Michelson Drive, Suite 400, Irvine, CA 92612,12303 Airport Way, Suite 250, Broomfield, CO 80021,Two North Riverside Plaza, Suite 1430, Chicago, IL 60606

 

Das ist nicht besonders hilfreich – eine kommagetrennte Liste, aber wir können nicht ohne Weiteres erkennen, wo eine Adresse endet und die nächste beginnt. An dieser Stelle brauchen wir die Tokenize-Methode, mit der wir den Textblock in Spalten oder Zeilen aufteilen können, ähnlich wie mit dem Tool Text in Spalten aufteilen. RegEx Tokenize hat jedoch zwei wichtige Eigenheiten:

  1. Anstatt einer Übereinstimmung mit allem, was Sie nicht erhalten möchten (z. B. ein Komma), suchen Sie nach allem, das Sie erhalten möchten (der gesamte Rest).
  2. Sie können mit einer markierten Gruppe auswählen, welche Segmente aufgeteilt oder ignoriert werden sollen. 

Das mag zunächst verwirrend klingen, ermöglicht jedoch eine flexible Auswahl bei der Aufteilung Ihrer Daten. Als Demonstration werden wir unseren Textblock mit Adressen zunächst mit dem Komma als Trennzeichen in mehrere Zeilen aufteilen.

 

regex5.JPG

 

Wir müssen nach den Elementen suchen, die wir zuordnen möchten, daher verwenden wir den Ausdruck (.+?)(?:,|$). Schauen wir uns das genauer an:

  • .+ sucht nach einem beliebigen Zeichen . und zwar ein- oder mehrere Male +
  • ? legt fest, dass wir eine faule anstelle einer gierigen Übereinstimmung verwenden. Diese Unterscheidung ist sehr nützlich, kann jedoch zu Anfang Schwierigkeiten bereiten. Für diese Einführung konzentrieren wir uns auf die Bedeutung von ?: Übereinstimmung mit dem voranstehenden Zeichen Null (überhaupt nicht) oder genau einmal.
  • Das Pluszeichen + bedeutet das Gegenteil: Es ist ein gieriges Symbol, und das voranstehende Zeichen . wird ein- oder mehrmals gesucht. Was passiert also, wenn wir ein gieriges Symbol als faul definieren? Wir zwingen es, die nächste Übereinstimmung zu betrachten, um festzulegen, wie gierig das Symbol sein darf. .+? bedeutet also in Wirklichkeit Folgendes:
    #39;Suche ein Zeichen ein- oder mehrmals, bis zur ersten Übereinstimmung mit dem nachstehenden Block#39;.
  • Der nachstehende Block ist eine unmarkierte Gruppe (?:,|$), die in gewisser Weise wie ein STOP-Schild für das voranstehende (.+?) funktioniert. Dieser Teil ist keine markierte Gruppe und ist daher nicht im Ergebnis vorhanden. Stattdessen handelt es sich um eine unmarkierte Gruppe, und wir suchen entweder nach einem Komma oder nach dem Zeilenende $ am Ende unseres Textblocks.

Uff, das ist viel zu verdauen. Nutzen Sie diese Gelegenheit, um sich zu strecken, einen Spaziergang zu machen oder zu meditieren.

 

line noise.gif

 

Mit dem Tool Text in Spalten aufteilen können Sie einen Text zwar viel einfacher nach Kommas aufteilen, aber die Flexibilität der Tokenize-Funktion zeigt sich bei anderen, hilfreichen Aufgaben. Wir können den Block mit Adressdaten beispielsweise in die ursprünglichen drei Adressen aufteilen.

 

regex6.JPG

 

In diesem Fall verwenden wir unseren letzten übereinstimmenden Ausdruck für die Postleitzahl /d{5}, um das Ende der einzelnen Übereinstimmungen zu markieren. Wir wissen also bereits, dass jede Zeile entweder mit einem Komma oder einem Zeilenende endet, und können den Block (?:,|$) verwenden, um diese Segmente erfolgreich aufzuteilen. Im vorherigen Beispiel habe ich das ?-Symbol vorgestellt, um Null oder eine Übereinstimmung zu finden und diesen Teil zu ersetzen, damit wir nach der Übereinstimmung mit der markierten Gruppe nach einem „optionalen Komma“ aufteilen können.

 

Mehr zur Tokenize-Funktion :

Bonus: Der Ausdruck ,? funktioniert im vorherigen Fall nicht und teilt den Text allein nach Komma auf - (.+?),? anstatt nach (.+?)(?:,|$). Warum?

Schreiben Sie Ihre Erklärung unten in die Kommentare und gewinnen Sie jede Menge Internetpunkte.

 

regex.png

 

Nun sollten Sie über Expertenkenntnisse für die Nutzung des RegEx-Tools verfügen! Falls Sie einen Anwendungsfall kennen, den wir ausgelassen haben, können Sie gerne nachstehend einen Kommentar hinterlassen! 

 

Sehen Sie sich schon als Tool-Meister? Schreiben Sie uns an Stephanie.jansen@alteryx.com, wenn Sie Ihre kreativen Tool-Anwendungsbeispiele in einem Artikel der Tool Mastery Serie vorstellen möchten.

 

Haben Sie noch Fragen? Die deutsche Community ist hier, um sie im Forum zu beantworten. 

 

Wenn Sie alle Designer-Tools beherrschen möchten, abonnieren Sie unsere E-Mail-Benachrichtigungen.

 

*Dieser Beitrag wurde von @AlexKo geschrieben.

Anhänge
Mitwirkende
Beschriftungen