Startpagina » Coding » Beginnersgids voor reguliere expressie (Regex)

    Beginnersgids voor reguliere expressie (Regex)

    Een reguliere expressie is een reeks tekens die een patroon vormen dat in een tekenreeks kan worden doorzocht. Regex kan worden gebruikt voor bevestiging zoals voor het valideren van creditcardnummers, voor zoeken d.w.z. via complexe tekstovereenkomsten, en voor vervangen van aangepaste tekst met een andere string. Het heeft ook geweldige ondersteuning voor meerdere talen - leer het een keer en je kunt het in vele programmeertalen gebruiken.

    Ik heb gezien dat weinig mensen een eerste blik werpen op regex en het volledig negeren. Ik neem het hen niet kwalijk; De syntaxis van regex is complex en zal veel kroepjes veroorzaken, net als die talen uit de commandoregel, maar erger. Maar dan is elk nieuw iets eng en lijkt het aanvankelijk onmogelijk om te leren. Dus, als ik de woorden van Horatius leen, zal ik dit zeggen; Begin, wees moedig en waag het om wijs te zijn.

    Over Regex

    Regex had zijn wortels in neurowetenschappen en wiskunde en werd pas in 1968 geïmplementeerd door Ken Thompson in QED-teksteditor voor tekstonderzoek. Nu is het onderdeel van veel programmeertalen zoals Perl, Java, Python, Ruby en JavaScript.

    Laten we eens kijken naar enkele voorbeelden van hoe Regex werkt.

    Ik zal JavaScript in mijn voorbeelden gebruiken. Om nu het beginnersniveau te halen, moet je alle leren tekens, klassen, kwantoren, modifiers en methoden gebruikt in regex. Hier is een link naar de pagina Reguliere expressie van Mozilla Developer Network, waar u een tabel met al deze kunt bekijken. Je kunt ook de cheatsheet aan het einde van dit bericht met de meeste gebruikte karakters raadplegen.

    Laten we een eenvoudig voorbeeld bekijken met een uitleg. Dit is een regex.

    Dit is waar de bovenstaande regex naar zal kijken in een regel, een karakter 'B' gevolgd door ten minste één van elk teken tussen (en inclusief) 'a' naar 'z', 'A' naar 'Z' en getallen 0 naar 9.

    Hier is een voorbeeld van wedstrijden in een gemarkeerde regel:

    Mand, lamp, B12 vitamine, BaSO4, N BC bedrijf

    De bovenstaande regex stopt het zoeken op Mand en geef een positieve reactie. Dat is omdat de wereldwijde modifier 'g'moet worden opgegeven als u wilt dat de regex alle mogelijke overeenkomsten bekijkt.

    Laten we nu kijken hoe we deze expressie in JavaScript kunnen gebruiken. De test methode gaat: indien gevonden een matchretour waar, anders vals.

     var input = "your test string", regex = / B [a-zA-Z \ d] + /; if (! regex.test (input)) alert ('Geen overeenkomst gevonden'); else alert ('Er is een overeenkomst gevonden');

    Laten we een andere methode proberen: wedstrijd geeft de overeenkomsten terug die in een array zijn gevonden.

     var input = "jouw test string", regex = / B [a-zA-Z \ d] + / g, / * Ik heb de globale modifier 'g' toegevoegd aan de regex om alle matches te krijgen * / ary = input.match (regex); if (ary === null) alert ('Geen overeenkomst gevonden'); else alert ('matches zijn:' + ary.toString ());

    Hoe zit het met string vervangen? Laten we dat nu met regex proberen.

     var input = "uw teststring", regex = / B [a-zA-Z \ d] + / g; alert (input.replace (regex, "#"));

    Hieronder is een codepen om in te stellen. Klik op het tabblad "JavaScript" om de JS-code te bekijken.

    Oefeningen

    Voor oefeningen kun je google “regex oefeningen” en probeer ze op te lossen. Dit is wat je kunt verwachten bij het proberen van deze oefeningen, afhankelijk van de moeilijkheidsniveaus.

    basis-

    Voor mij om te kunnen een wachtwoord valideren is genoeg voor starters. Dus, valideer een wachtwoord van 8 tot 16 tekens lang, alfanumeriek met je speciale tekens toegestaan.

    tussen-

    Dit is waar je zou moeten oefenen met meer real-world data en meer regex-punten zoals kijk, ogenblikkelijke beweringen en overeenkomende groepen;

    • Valideer pincodes, hexadecimalen, datums, e-mail-ID, zwevend punt.
    • Vervang achterliggende nul, witruimten, een reeks overeenkomende woorden
    • Extracteer verschillende delen van een URL

    gevorderd

    Je kunt de oplossingen van de bovenstaande oefeningen optimaliseren - de meest optimale regex voor e-mail bevat duizenden tekens - dus neem het zo ver als je je prettig voelt en dat is genoeg. U kunt ook proberen:

    • HTML of XML parseren (ook al wordt het in de echte wereld afgeraden om dit te doen omdat het gebruik van reguliere expressie om niet-reguliere taal zoals HTML te parsen het nooit onfeilbaar maakt.) Plus XML-parsering is een moeilijke taak, meer geschikt voor gebruikers van een gevorderd niveau)
    • Tags vervangen
    • Opmerkingen verwijderen (met uitzondering van de IE-voorwaardelijke opmerkingen)

    Hulpmiddelen

    Tools voor visualiseer regex zijn een van de coolste dingen die er zijn voor mij. Als je ooit een lange complexe regex tegenkomt, kopieer ze dan gewoon in een van die tools en je zult de flow duidelijk kunnen zien. Daarnaast zijn er veel tools die je kunt gebruiken om met de regex-code te spelen. Ze presenteren ook voorbeelden en cheatsheets samen met deelfuncties.

    • Debuggex - Het tekent een regex-diagram op basis van uw invoer en u kunt een snelle share maken naar StackOverflow vanaf daar.
    • RegExr - Je kunt je regex hiermee testen. Het kreeg ook een referentie, een cheatsheet en voorbeelden om je te helpen.
    • Refiddle - Op dit moment kunt u, behalve JavaScript, ook ruzie maken met Ruby en .NET versies van regex erin.

    Regex Cheatsheet

    blijk Definitie
    [abc] Elk willekeurig teken a, b of c
    [^ Abc] Elk ander teken dan a, b of c
    [A-z] Karakter tussen (inclusief) a tot z
    [^ A-z] Teken behalve van a tot z
    [AZ] Karakter tussen (inclusief) A tot Z
    . Elk enkel teken
    \ s Elk witruimte-teken
    \ S Elk niet-spatie karakters
    \ d Elk cijfer van 0 tot 9
    \ D Alle niet-cijfers
    \ w Elk woordteken (letter, cijfer en onderstrepingsteken)
    \ w Elk niet-woordteken
    (...) Leg alles omsloten vast
    (A | b) Komt overeen met a of b
    een? Karakter a is één keer afwezig of aanwezig
    een* Karakter a is meer afwezig of meer keren aanwezig
    een+ Karakter a is een of meerdere keren aanwezig
    a 3 3 keer voorkomen van karakter a opeenvolgend
    a 3 3 of meer voorkomens van karakter a opeenvolgend
    a 3,6 3 tot 6 keer voorkomen van karakter a opeenvolgend
    ^ Begin van string
    $ Einde van de string
    \ b Een woordgrens. Als een teken het laatste of eerste woordteken van een woord is of Als een teken zich tussen een woord of een niet-woordteken bevindt
    \ B Niet-woordgrens

    Nu lezen: reguliere expressies: 30 nuttige hulpmiddelen en bronnen