Kotisivu » Coding » Aloittelijan opas säännölliseen ilmaisuun (Regex)

    Aloittelijan opas säännölliseen ilmaisuun (Regex)

    Tavallinen lauseke on joukko merkkejä, jotka muodostavat kuvion, jota voidaan hakea merkkijonossa. Regexiä voidaan käyttää validointi esimerkiksi luottokorttinumeroiden validoimiseksi Hae toisin sanoen monimutkaisten tekstimerkkien kautta ja vastaavan tekstin korvaaminen toisella merkkijonolla. Siinä on myös suuri monikielinen tuki - opi se kerran ja voit käyttää sitä useilla ohjelmointikielillä.

    Olen nähnyt harvat ihmiset katsomaan ensimmäistä kertaa regexiä ja sivuuttamaan sen kokonaan. En syytä heitä; regexin syntaksi on monimutkainen, ja se tekee monista sorvauksista aivan kuten komentorivikieliä, vain pahempaa. Mutta sitten jokainen uusi asia on pelottava ja tuntuu mahdottomalta oppia aluksi. Joten, lainatessani Horatius-sanoja, sanon tämän; Aloita, olkaa rohkea ja luota viisaan.

    Tietoa Regexistä

    Regexin juuret olivat neurotieteessä ja matematiikassa, ja Ken Thompson otti sen QED-tekstieditorissa käyttöön vain 1968 ohjelmoinnissa. Nyt se on osa monia ohjelmointikieliä, kuten Perl, Java, Python, Ruby ja JavaScript.

    Katsotaanpa joitakin esimerkkejä siitä, miten regex toimii.

    Käytän JavaScriptin esimerkkejäni. Nyt, läpäisemään aloittelijatason, sinun täytyy oppia kaikki merkkejä, luokkia, kvantifikaattoreita, muokkaajia ja menetelmiä käytetään regexissä. Seuraavassa on linkki Mozilla Developer Networkin säännöllisen lausekkeen sivulle, jossa voit tarkastella kaikkia niitä sisältävää taulukkoa. Voit myös viitata tämän viestin lopussa olevaan huijataulukkoon useimmilla käytetyillä merkkeillä.

    Katsotaanpa yksinkertainen esimerkki ja selitys. Tämä on regex.

    Tämä on mitä edellä mainittu regex etsii riviltä, ​​merkki "B", jota seuraa ainakin yksi merkistä välillä (ja sisältää) 'a' - 'z', 'A' - 'Z' ja numerot 0 - 9.

    Tässä esimerkki valituista riveistä:

    kori, polttimo, B12 vitamiini, BaSO4, N BC yhtiö

    Yllä oleva regex lopettaa haun osoitteessa kori ja palauttaa positiivinen vastaus. Tämä johtuu siitä globaali muuttajag”on määriteltävä jos haluat, että regex etsii kaikki mahdolliset ottelut.

    Katsotaanpa nyt, miten tätä ilmaisua käytetään JavaScriptissä. testata Menetelmä menee: jos löytyy ottelun paluu totta, muu väärä.

     var input = "sinun testijono", regex = / B [a-zA-Z] + /; jos (! regex.test (input)) hälytys ('Ei löytynyt'); muu hälytys ('Ottelu löytyy');

    Kokeile toista menetelmää: ottelu palauttaa taulukossa olevat ottelut.

     var input = "teidän testijaksosi", regex = / B [a-zA-Z d] + / g, / * Olen lisännyt globaalin modifikaattorin 'g' regexiin saadaksesi kaikki ottelut * / ary = input.match (regex); jos (ary === null) hälytys ('Ei löytynyt'); muu hälytys ('ottelut ovat:' + ary.toString ());

    Entä merkkijono korvata? Kokeile sitä nyt regexillä.

     var input = "teidän testijaksosi", regex = / B [a-zA-Z] + / g; hälytys (input.replace (regex, "#"));

    Alla on koodisoitin, jolla voit säätää. Voit tarkastella JS-koodia napsauttamalla JavaScript-välilehteä.

    Harjoitukset

    Harjoituksia varten voit google “regex-harjoitukset” ja yritä ratkaista ne. Tässä on odotettavissa, kun yrität näitä harjoituksia vaikeustasojen mukaan.

    perustiedot

    Minulle pystyy vahvista salasana riittää startereille. Vahvista siis 8 - 16 merkin pituinen salasana, aakkosnumeerinen ja sallittujen erikoismerkkien valinta.

    väli-

    Silloin sinun pitäisi harjoitella todellisempia tietoja maailmasta ja oppia muutamia muita regex-pisteitä lookahead, lookbehind väitteet ja vastaavat ryhmät;

    • Vahvista PIN-koodit, heksadesimaalit, päivämäärät, sähköpostitunnus, kelluva kohta.
    • Vaihda nollapiste, välilyönnit, joukko vastaavia sanoja
    • Pura URL-osoitteen eri osat

    Pitkälle kehittynyt

    Voit optimoida yllä mainitut harjoitukset - optimaalinen sähköpostiviestin regex on siinä tuhansia merkkejä - niin ota se niin pitkälle kuin sinusta tuntuu mukavalta ja se riittää. Voit myös kokeilla:

    • HTML: n tai XML: n jäsentäminen (joskin todellisessa maailmassa sitä ei haluta tehdä, koska tavallisen lausekkeen käyttäminen ei-säännöllisen kielen, kuten HTML: n jäsentämiseen, ei koskaan tee sitä luotettavaksi. Plus XML-jäsentäminen on vaikea tehtävä, sopivampi edistyneen tason käyttäjille)
    • Tunnisteiden vaihtaminen
    • Kommenttien poistaminen (paitsi IE: n ehdolliset kommentit)

    Työkalut

    Työkalut visualisoida regex ovat yksi hienoimmista asioista. Jos olet törmännyt pitkään monimutkaiseen regexiin, kopioi ne yhdeksi näistä työkaluista ja voit tarkastella virtaa selvästi. Sen lisäksi on monia työkaluja, joita voit käyttää viereen regex-koodin kanssa. He esittelevät myös esimerkkejä ja sanakirjoja sekä jakamisominaisuuksia.

    • Debuggex - Se piirtää syötteesi regex-kaavion ja voit tehdä nopean jakelun StackOverflow'lle heti.
    • RegExr - Voit testata regexsi tämän kanssa. Se sai myös viittauksen, cheatsheet ja esimerkkejä, jotka auttavat sinua.
    • Refiddle - Tällä hetkellä, muu kuin JavaScript, voit myös viettää Ruby- ja .NET-versioita regexistä.

    Regex Cheatsheet

    symbolinen Määritelmä
    [Abc] Mikä tahansa yksittäinen merkki a, b tai c
    [^ Abc] Mikä tahansa muu merkki kuin a, b tai c
    [A-z] Merkin välillä (mukaan lukien) a - z
    [^ A-z] Merkki paitsi a: sta
    [A-Z] Merkin välillä (mukaan lukien) A - Z
    . Kaikki yksittäiset merkit
    \ s Mikä tahansa välilyönti
    \ S Mikä tahansa ei-välilyönti
    \ d Kaikki numerot 0 - 9
    \ D Kaikki ei-numeroiset
    \ w Kaikki sanamerkit (kirjain, numero ja alaviiva)
    \ W Mikä tahansa ei-sanallinen merkki
    (…) Ota kaikki kiinni
    (A | b) Vastaa joko a tai b
    ? Merkki a on joko poissa tai läsnä kerran
    a * Merkki a on joko poissa tai esiintyy enemmän
    + Merkki a on yksi tai useampia kertoja
    a 3 3 merkkiä esiintyy peräkkäin
    a 3, 3 tai useampia merkin a esiintymiä peräkkäin
    a 3,6 3–6 merkin a esiintymistä peräkkäin
    ^ Merkkijonon alkaminen
    $ Merkkijonon loppu
    \ b Sanan raja. Jos merkki on sanan viimeinen tai ensimmäinen sana tai jos merkki on sanan tai ei-sanan välillä
    \ B Sanaton raja

    Nyt Lue: Säännölliset lausekkeet: 30 Hyödyllisiä työkaluja ja resursseja