Algaja regulaaravaldise juhend (Regex)
Regulaarne väljend on märkide kogum, mis moodustab stringi, mida saab stringis otsida. Regexit saab kasutada kinnitamine näiteks krediitkaardi numbrite kinnitamiseks otsing st keeruliste tekstide vastete kaudu ja sobiva teksti asendamine teise stringiga. Sellel on ka suur mitmekeelne tugi - õppige seda üks kord ja saate seda kasutada paljudes programmeerimiskeeles.
Ma olen näinud vähesed inimesed, kes vaatavad regexi esimest pilti ja ignoreerivad seda täielikult. Ma ei süüdista neid; regexi süntaks on keeruline ja muudab paljude sundide sarnaseks nende käsurealikeeltega, mis on halvem. Aga siis on iga uus asi hirmutav ja alguses võimatu õppida. Niisiis, laenates Horatius 'sõnu, ütlen seda; Alusta, olge julge ja olge tark.
Regexist
Regexi juured olid neuroteaduses ja matemaatikas ning neid rakendati programmeerimises 1968. aastal Ken Thompsoni poolt tekstiotsingu jaoks QED-i tekstiredaktoris. Nüüd on see osa paljudest programmeerimiskeeltest, nagu Perl, Java, Python, Ruby ja JavaScript.
Vaatame mõningaid näiteid, kuidas regex töötab.
Ma kasutan JavaScripti minu näidetes. Nüüd, et minna algaja tasemele, peate kõik õppima märgid, klassid, kvantifikaatorid, modifikaatorid ja meetodid kasutatakse regexis. Siin on link Mozilla Developer Networki regulaaravaldise lehele, kus saate vaadata kõiki neid sisaldavat tabelit. Samuti võite selle postituse lõpus olevale pettuste lehele viidata kõige enam kasutatud märkidega.
Vaatame lihtsat näidet koos selgitusega. See on regex.
See on see, mida ülaltoodud regex otsib reas, märk "B", millele järgneb vähemalt üks mis tahes märkidest (ja sisaldab) "a" kuni "z", "A" kuni "Z" ja numbrid 0 kuni 9.
Siin on näidis vastete hulgast, mis on esile tõstetud:
Korv, pirn, B12 vitamiin, BaSO4, N BC ettevõte
Ülaltoodud regex peatab otsingu aadressil Korv andma positiivse vastuse. Seda sellepärast globaalne modifikaatorg
„tuleb täpsustada kui soovite, et regex uuriks kõiki võimalikke vasteid.
Vaatame nüüd, kuidas seda väljendit kasutada JavaScriptis. The test
meetod läheb: kui leitakse vaste tagasi tõsi
, muidu vale
.
var input = "teie test string", regex = / B [a-zA-Z] + /; kui (! regex.test (sisend)) hoiatus ("Vastavust ei leitud"); muu hoiatus ("Leitud on");
Proovime teist meetodit: sobi
tagastab massiivis leitud vasted.
var input = "teie testistring", regex = / B [a-zA-Z] + / g, / * Kõigi vastete saamiseks * / ary = olen lisanud regexile globaalse modifikaatori 'g' input.match (regex); kui (ary === null) hoiatus („Vastavust ei leita”); muu hoiatus ('vasted on:' + ary.toString ());
Kuidas oleks string asendada
? Proovime seda nüüd regexiga.
var input = "teie test string", regex = / B [a-zA-Z] + / g; hoiatus (input.replace (regex, "#"));
Allpool on näpunäide. JS-koodi vaatamiseks klõpsake vahekaardil "JavaScript".
Harjutused
Harjutuste jaoks saate Google'i “regexi harjutused” ja proovige neid lahendada. Siin on, mida oodata nende harjutuste katsetamisel vastavalt raskusastmetele.
Põhiline
Minu jaoks on mul võimalik parooli kinnitamiseks on piisavalt algajatele. Niisiis kinnitage 8 kuni 16 tähemärgi pikkuse parool, mis on lubatud tähti tähistades.
Kesktase
See on koht, kus peaksite tegelema rohkem reaalse maailma andmetega ja õppima veel mõned regex-punktid lookahead, ettevaatlikud väited ja sobivad rühmad;
- Kinnitage PIN-koodid, kuueteistkümnendid, kuupäevad, e-posti ID, ujuvpunkt.
- Asendage null, tühikud, sobivad sõnad
- Eemaldage URL-i erinevad osad
Täpsem
Ülaltoodud harjutuste lahendusi saate optimeerida - kõige optimaalsem e-posti regex on selles tuhandeid märke - nii võtke see nii kaugele kui tunnete end mugavalt ja see on piisavalt. Võite proovida ka:
- HTML-i või XML-i (paralleelselt reaalses maailmas seda ei soovitata teha, kuna tavalise avaldise kasutamine tavalise keele kui HTML-i parsimiseks kasutamine ei tee seda kunagi lollikindlaks. Plus XML-i parsimine on keeruline ülesanne, mis sobib kõrgtasemel kasutajatele)
- Siltide vahetamine
- Kommentaaride eemaldamine (va IE tingimuslikud kommentaarid)
Tööriistad
Tööriistad visualiseerida regexi on üks kõige lahedamaid asju minu jaoks. Kui olete kunagi kogenud pikka keerulist regexi, kopeerige need lihtsalt ühte neist tööriistadest ja saate voolu selgelt vaadata. Peale selle on palju tööriistu, mida saab kasutada regexi koodiga viimiseks. Nad esitlevad ka näiteid ja mõisteid koos jagamise funktsioonidega.
- Debuggex - see koostab regex-diagrammi teie sisendi järgi ja saate kohe teha StackOverflow'le kiire jagamise.
- RegExr - saate selle regexi testida. Samuti sai viide, pettuste leht ja näited, mis teid aitaksid.
- Refiddle - hetkel, välja arvatud JavaScripti, saate seda ka viita Ruby ja .NET versioonidega regexi sees.
Regex Cheatsheet
Token | Määratlus |
[abc] | Iga üksik tähemärk a, b või c |
[^ abc] | Mistahes muu tähemärk peale a, b või c |
[a-z] | Märk (vahemikus a) kuni z |
[^ a-z] | Märk, välja arvatud a-st |
[A-Z] | (Vahemikus A kuni Z) |
. | Ükski iseloom |
s | Mis tahes tühimärk |
S | Mistahes mitte-tühimärk |
d | Kõik numbrid 0 kuni 9 |
D | Mistahes mittearvuline |
w | Iga sõna märk (täht, number ja allakriipsutus) |
W | Mistahes mitte-sõna iseloom |
(…) | Pildista kõik suletud |
(a | b) | Vastake kas a või b |
a? | Märk on a kas puudub või esineb üks kord |
a * | Märk on a kas puudub või esineb rohkem kordi |
a+ | Märk on a üks või mitu korda |
a 3 | 3 järjestikust iseloomu a |
a 3, | 3 või enam tähemärgi a esinemist järjest |
a 3,6 | 3 kuni 6 tähemärgi a esinemist järjest |
^ | Stringi algus |
$ | Stringi lõpp |
b | Sõna piir. Kui märk on sõna viimane või esimene sõnamärk või kui sõna või sõna vahel on märk |
B | Mittesõnaline piir |