Početna » šifriranje » Vodič za početnike za regularni izraz (Regex)

    Vodič za početnike za regularni izraz (Regex)

    Uobičajeni izraz je skup znakova koji tvore uzorak koji se može pretraživati ​​u nizu. Regex se može koristiti za potvrđivanje kao što je potvrda brojeva kreditnih kartica, za traži tj. putem složenih tekstualnih podudaranja i za zamjenjuje odgovarajući tekst s drugim nizom. Ona također ima veliku podršku više jezika - naučiti jednom i možete ga koristiti na mnogim programskim jezicima.

    Vidio sam nekoliko ljudi koji prvi pogledaju regex i potpuno ga ignoriraju. Ne krivim ih; sintaksa regexa je složena i učinit će mnoge gužve poput onih u jezicima naredbenog retka, samo još gore. Ali onda je svaka nova stvar zastrašujuća i čini se da je u početku nemoguće naučiti. Dakle, posuđujući Horatiusove riječi reći ću ovo; Počnite, budite hrabri i usudite se biti mudri.

    O Regexu

    Regex je imao svoje korijene u neuroznanosti i matematici, a programirao ga je tek 1968. Ken Thompson u QED uređivaču teksta za pretraživanje teksta. Sada je dio mnogih programskih jezika kao što su Perl, Java, Python, Ruby i JavaScript.

    Pogledajmo nekoliko primjera kako radi regex.

    Ja ću koristiti JavaScript u mojim primjerima. Sada, da biste prošli početničku razinu, morate naučiti sve znakovi, klase, kvantifikatori, modifikatori i metode koristi se u regexu. Evo veze na stranicu regularnog izraza mreže Mozilla Developer Network gdje možete vidjeti tablicu koja sadrži sve te. Možete također pogledati i sažetak na kraju ovog posta s najčešće korištenim znakovima.

    Pogledajmo jednostavan primjer s objašnjenjem. Ovo je izraz.

    To je ono što će gore navedeni regex tražiti u retku, znak 'B' iza kojeg slijedi barem jedan od bilo kojeg znaka između (i uključujući) 'a' do 'z', 'A' do 'Z' i brojeva 0 do 9.

    Evo primjera podudaranja u označenom retku:

    Košara, žarulja, B12 vitamin, BaSO4, N PRIJE KRISTA društvo

    Gornji regex će zaustaviti pretraživanje na Košara i vratiti pozitivan odgovor. To je zato što globalni modifikator "g'treba navesti ako želite da regex pogleda sve moguće utakmice.

    Sada ćemo vidjeti kako koristiti ovaj izraz u JavaScriptu. test metoda ide: ako je pronađena podudarnost pravi, drugo lažan.

     var input = "vaš test string", regex = / B [a-zA-Z d] + /; ako je upozorenje (! regex.test (input)) ("Nije pronađeno nijedan rezultat"); drugo upozorenje ("Pronađeno je podudaranje");

    Pokušajmo s drugom metodom: utakmica vraća podudaranja pronađena u nizu.

     var input = "vaš testni niz", regex = / B [a-zA-Z d] + / g, / * Dodao sam globalni modifikator 'g' u regex da bi dobio sve podudarnosti * / ary = input.match (regex); ako je upozorenje (ary === null) ('Nema podudaranja'); else alert ('podudaranja su:' + ary.toString ());

    Što kažeš na niz zamijeniti? Pokušajmo sada s regexom.

     var input = "vaš test string", regex = / B [a-zA-Z d] + / g; upozorenje (input.replace (regex, "#"));

    Ispod je kodna oznaka za podešavanje. Kliknite karticu "JavaScript" da biste vidjeli JS kod.

    vježbe

    Za vježbe, možete google “vježbe regexa” i pokušajte ih riješiti. Evo što možete očekivati ​​kada pokušate ove vježbe, prema stupnjevima težine.

    Osnovni, temeljni

    Za mene to mogu potvrdite lozinku dovoljno za početak. Dakle, potvrdite lozinku za duljinu od 8 do 16 znakova, alfanumerički s dopuštenim izborom posebnih znakova.

    srednji

    Ovdje trebate vježbati s više podataka iz stvarnog svijeta i naučiti još nekoliko točaka regexa pogleda, gledaj iza tvrdnji i odgovarajuće grupe;

    • Potvrdite PIN kodove, heksadecimalne brojeve, datume, ID e-pošte, pokretnu točku.
    • Zamijenite zadnju nulu, razmake, skup podudarnih riječi
    • Izdvojite različite dijelove URL-a

    Napredna

    Možete optimizirati rješenja gore navedenih vježbi - najoptimalniji regex za e-poštu ima tisuće znakova u njemu - tako uzmite ga koliko vam je ugodno i to je dovoljno. Možete i pokušati:

    • Raščlanjivanje HTML-a ili XML-a (iako se u stvarnom svijetu to obeshrabruje jer korištenje regularnog izraza za raščlanjivanje ne-uobičajenog jezika kao što je HTML neće ga učiniti sigurnim. Plus XML parsiranje je težak zadatak, prikladniji za napredne korisnike)
    • Zamjena oznaka
    • Uklanjanje komentara (osim uvjetnih komentara za IE)

    alat

    Alati za vizualizirajte regex su jedna od najboljih stvari za mene. Ako ikada naiđete na dugi kompleksni regeks, samo ih kopirajte u jedan od tih alata i moći ćete jasno vidjeti protok. Osim toga, postoji mnogo alata koje možete koristiti za gusle s regex kodom. Oni također prikazuju primjere i šahovnice zajedno s značajkama dijeljenja.

    • Debuggex - iscrtava regex dijagram prema Vašem unosu i odatle možete brzo dijeliti StackOverflow.
    • RegExr - Možete testirati svoje regex s ovim. Također je dobio referencu, cheatsheet i primjere koji će vam pomoći.
    • Refiddle - U ovom trenutku, osim JavaScript, također možete gusle s Ruby i. NET verzijama regex u njemu.

    Regex Cheatsheet

    žeton definicija
    [Abc] Bilo koji pojedinačni znak a, b ili c
    [^ Abc] Bilo koji znak osim a, b ili c
    [A-z] Znak između (uključujući) od a do z
    [^ A-z] Znak osim s a do z
    [A-Z] Znak između (uključujući) od A do Z
    . Bilo koji pojedinačni znak
    \ s Bilo koji znak praznine
    \ S Bilo koji znak bez razmaka
    \ d Bilo koja znamenka 0 do 9
    \ D Bilo koja ne-znamenka
    \ w Bilo koji znak riječi (slovo, broj i donja crta)
    \ W Bilo koji znak koji nije riječ
    (…) Snimite sve priloženo
    (A | b) Podudaraju se s a ili b
    ? Znak a je odsutan ili je prisutan jedno vrijeme
    A * Znak a je odsutan ili prisutan više puta
    + Znak a prisutan je jedan ili više puta
    a 3 3 uzastopna pojavljivanja karaktera
    a 3 3 ili više pojava karaktera uzastopno
    a 3,6 3 do 6 pojava karaktera uzastopno
    ^ Početak niza
    $ Kraj niza
    \ b Granica riječi. Ako je znak znak riječi za posljednju ili prvu riječ ili Ako je znak između riječi ili ne-riječi
    \ B Granica bez riječi

    Sada pročitajte: regularni izrazi: 30 Korisni alati i resursi