Startseite » Codierung » Anfängerleitfaden für reguläre Ausdrücke (Regex)

    Anfängerleitfaden für reguläre Ausdrücke (Regex)

    Ein regulärer Ausdruck ist eine Gruppe von Zeichen, die ein Muster bilden, das in einer Zeichenfolge gesucht werden kann. Regex kann für verwendet werden Validierung B. um Kreditkartennummern zu validieren, z Suche über komplexe Textübereinstimmungen und für übereinstimmenden Text ersetzen mit einer anderen Saite. Es hat auch eine großartige Unterstützung für mehrere Sprachen - lernen Sie es einmal und Sie können es in vielen Programmiersprachen verwenden.

    Ich habe gesehen, dass nur wenige Leute einen ersten Blick auf Regex haben, und dies völlig ignorieren. Ich beschuldige sie nicht. Die Syntax von Regex ist komplex und wird viele, genau wie diese Kommandozeilensprachen, nur noch schlimmer machen. Aber dann ist jedes neue Ding unheimlich und scheint zunächst nicht zu lernen. Wenn ich Horatius 'Worten leihe, sage ich das; Beginne, sei mutig und wage, weise zu sein.

    Über Regex

    Regex hatte seine Wurzeln in der Neurowissenschaft und Mathematik und wurde erst 1968 von Ken Thompson im QED-Texteditor für die Textsuche in der Programmierung implementiert. Jetzt ist es Teil vieler Programmiersprachen wie Perl, Java, Python, Ruby und JavaScript.

    Schauen wir uns einige Beispiele an, wie Regex funktioniert.

    Ich werde in meinen Beispielen JavaScript verwenden. Um das Anfänger-Niveau zu bestehen, müssen Sie alles lernen Zeichen, Klassen, Quantifizierer, Modifikatoren und Methoden Wird in Regex verwendet. Hier ist ein Link zur Seite "Reguläre Ausdrücke" des Mozilla Developer Network, auf der Sie eine Tabelle mit all diesen Informationen anzeigen können. Sie können auch auf das Cheatsheet am Ende dieses Beitrags mit den meisten verwendeten Zeichen verweisen.

    Sehen wir uns ein einfaches Beispiel mit einer Erklärung an. Dies ist eine Regex.

    Dies ist, wonach der obige Regex in einer Zeile sucht, einem Zeichen "B", gefolgt von mindestens einem beliebigen Zeichen zwischen (und einschließlich) "a" bis "z", "A" bis "Z" und den Zahlen 0 bis 9.

    Hier ist ein Beispiel für Übereinstimmungen in einer hervorgehobenen Zeile:

    Korb, Birne, B12 Vitamin, BaSO4, N BC Unternehmen

    Der obige reguläre Ausdruck stoppt die Suche um Korb und eine positive Antwort zurücksenden. Das ist, weil der globale Modifikator 'G'muss angegeben werden wenn Sie möchten, dass der Regex alle möglichen Übereinstimmungen untersucht.

    Sehen wir uns nun an, wie Sie diesen Ausdruck in JavaScript verwenden können. Das Prüfung Methode geht: Wenn eine Übereinstimmung gefunden wird, wird zurückgegeben wahr, sonst falsch.

     var input = "Ihre Testzeichenfolge", regex = / B [a-zA-Z \ d] + /; if (! regex.test (input)) alert ('Es wurde keine Übereinstimmung gefunden'); else alert ('Eine Übereinstimmung wurde gefunden');

    Versuchen wir eine andere Methode: Spiel gibt die gefundenen Übereinstimmungen in einem Array zurück.

     var input = "Ihre Testzeichenfolge", regex = / B [a-zA-Z \ d] + / g, / * Ich habe den globalen Modifizierer 'g' zur Regex hinzugefügt, um alle Übereinstimmungen zu erhalten * / ary = input.match (Regex); if (ary === null) alert ('Keine Übereinstimmung gefunden'); else alert ('Übereinstimmungen sind:' + ary.toString ());

    Wie wäre es mit String ersetzen? Versuchen wir das jetzt mit Regex.

     var input = "Ihre Testzeichenfolge", regex = / B [a-zA-Z \ d] + / g; alert (input.replace (regulärer Ausdruck, "#"));

    Nachfolgend finden Sie ein Codepen zum Tweak. Klicken Sie auf die Registerkarte "JavaScript", um den JS-Code anzuzeigen.

    Übungen

    Für Übungen können Sie googeln “Regex-Übungen” und versuche sie zu lösen. Was Sie bei diesen Übungen je nach Schwierigkeitsgrad erwarten sollten:.

    Basic

    Für mich zu können ein Passwort bestätigen reicht für den Anfang. Überprüfen Sie also ein Kennwort mit einer Länge von 8 bis 16 Zeichen (alphanumerisch), wobei Sie die gewünschten Sonderzeichen verwenden können.

    Mittlere

    Hier sollten Sie mit mehr Daten aus der realen Welt üben und ein paar weitere Regex-Punkte lernen Lookahead, Lookbehind Behauptungen und passende Gruppen;

    • Überprüfen Sie PIN-Codes, Hexadezimalzahlen, Datumsangaben, E-Mail-ID und Gleitkommazahl.
    • Ersetzen Sie abschließende Nullen, Leerzeichen und einen Satz übereinstimmender Wörter
    • Extrahieren Sie verschiedene Teile einer URL

    Erweitert

    Sie können die oben genannten Übungslösungen optimieren - der optimalste Regex für E-Mails enthält Tausende von Zeichen - also Nehmen Sie es so weit, wie Sie sich wohl fühlen und das reicht. Sie können auch versuchen:

    • Analysieren von HTML oder XML (obwohl in der realen Welt davon abgeraten wird, dies zu tun, da nicht reguläre Ausdrücke wie HTML mit regulären Ausdrücken analysiert werden.
    • Tags ersetzen
    • Kommentare entfernen (mit Ausnahme der IE-bedingten Kommentare)

    Werkzeuge

    Werkzeuge zum Regex visualisieren sind eines der coolsten Dinge für mich. Wenn Sie auf einen langen, komplexen Regex stoßen, fügen Sie ihn einfach in eines dieser Werkzeuge ein und Sie können den Fluss deutlich sehen. Daneben gibt es viele Tools, mit denen Sie mit dem Regex-Code arbeiten können. Sie zeigen auch Beispiele und Cheatsheets sowie Freigabemerkmale.

    • Debuggex - Es zeichnet ein Regex-Diagramm gemäß Ihrer Eingabe und Sie können StackOverflow direkt von dort aus freigeben.
    • RegExr - Sie können Ihren Regex mit diesem testen. Es hat auch eine Referenz, ein Cheatsheet und Beispiele, um Ihnen zu helfen.
    • Refiddle - Im Moment können Sie, abgesehen von JavaScript, auch mit Ruby- und .NET-Versionen von Regex darin arbeiten.

    Regex Cheatsheet

    Zeichen Definition
    [ABC] Jedes einzelne Zeichen a, b oder c
    [^ abc] Jedes Zeichen außer a, b oder c
    [a-z] Zeichen zwischen (einschließlich) a bis z
    [^ a-z] Zeichen außer von a bis z
    [A-Z] Zeichen zwischen (einschließlich) A bis Z
    . Ein beliebiges einzelnes Zeichen
    \ s Jeder Whitespace-Charakter
    \ S Jeder Nicht-Whitespace-Charakter
    \ d Jede Ziffer von 0 bis 9
    \ D Eine beliebige Zahl
    \ w Beliebige Wortzeichen (Buchstaben, Zahlen und Unterstriche)
    \ W Ein beliebiges Nicht-Wort-Zeichen
    (…) Erfassen Sie alles eingeschlossene
    (a | b) Passen Sie entweder a oder b an
    ein? Zeichen a ist entweder nicht vorhanden oder einmal vorhanden
    ein* Zeichen a ist entweder nicht vorhanden oder mehrmals vorhanden
    ein+ Zeichen a ist ein- oder mehrmals vorhanden
    a 3 3 Vorkommen eines Charakters a aufeinanderfolgend
    a 3, 3 oder mehr Vorkommen des Charakters a aufeinanderfolgend
    a 3,6 3 bis 6 Vorkommen des Charakters a nacheinander
    ^ Anfang der Zeichenfolge
    $ Ende der Zeichenfolge
    \ b Eine Wortgrenze. Wenn ein Zeichen das letzte oder erste Wort eines Wortes ist oder Wenn ein Zeichen zwischen einem Wort oder einem Nicht-Wort-Zeichen steht
    \ B Nicht-Wortgrenze

    Jetzt lesen: Reguläre Ausdrücke: 30 nützliche Tools und Ressourcen