Vodnik za začetnike za regularni izraz (Regex)
Redni izraz je niz znakov, ki tvorijo vzorec, ki ga je mogoče iskati v nizu. Regex se lahko uporablja za potrjevanje za potrditev številk kreditnih kartic, za Iskanje npr. z zapletenim besedilom in za zamenjava ujemajočega se besedila z drugim nizom. Prav tako ima veliko podporo za več jezikov - učite se enkrat in jo lahko uporabljate na številnih programskih jezikih.
Videl sem nekaj ljudi, ki prvi pogledajo regex, in ga v celoti ignorirajo. Ne krivim jih; Sintaksa regexa je zapletena in bo povzročila veliko stiskanja kot tisti jeziki ukazne vrstice, le še slabše. Toda potem je vsaka nova stvar strašljiva in se na prvi pogled zdi nemogoče. Torej, sposodil Horatiusove besede bom rekel to; Začnite, bodite drzni in se podajte pametno.
O Regexu
Regex je imel korenine v nevroznanosti in matematiki in je bil v programiranju leta 1968 implementiran samo s strani Ken Thompsona v urejevalniku besedila QED za iskanje besedila. Zdaj je del številnih programskih jezikov, kot so Perl, Java, Python, Ruby in JavaScript.
Poglejmo nekaj primerov, kako deluje regex.
V svojih primerih bom uporabljal JavaScript. Zdaj, da bi prestali začetniško raven, se morate naučiti vsega znaki, razredi, kvantifikatorji, modifikatorji in metode uporablja v regex. Tukaj je povezava do strani za regularne izraze Mozilla Developer Network, kjer si lahko ogledate tabelo, ki vsebuje vse te. Lahko se sklicujete tudi na cheatheet na koncu te objave z najbolj uporabljenimi znaki.
Poglejmo preprost primer z razlago. To je izraz.
To je tisto, kar bo zgornji regularni izraz iskal v vrstici, znak "B", ki mu sledi vsaj en znak med (in vključno) "a" do "z", "A" do "Z" in številke 0 do 9.
Tukaj je vzorec zadetkov v označeni vrstici:
Košara, žarnica, B12 vitamin, BaSO4, N Pr podjetja
Zgoraj navedeni izraz bo zaustavil iskanje na Košara in vrnejo pozitiven odziv. To je zato globalni modifikator "g
je treba navesti če želite, da regex preuči vse možne tekme.
Zdaj pa poglejmo, kako uporabiti ta izraz v JavaScriptu. The test
Metoda se nadaljuje: če najdemo vrnitev ujemanja prav
, drugače false
.
var input = "vaš testni niz", regex = / B [a-zA-Z d] + /; če je opozorilo (! regex.test (input)) ("Ni zadetkov"); drugo opozorilo (»Najdeno je ujemanje«);
Poskusimo z drugo metodo: ujemajo
vrne ujemanja, ki jih najdete v matriki.
var input = "vaš testni niz", regex = / B [a-zA-Z d] + / g, / * Dodal sem globalni modifikator "g" za regex, da dobim vse tekme * / ary = input.match (regex); if (ary === null) opozorilo ("Ni ujemanja najdeno"); else alert ('ujemanja so:' + ary.toString ());
Kaj pa niz zamenjati
? Poskusimo to z regexom zdaj.
var input = "vaš testni niz", regex = / B [a-zA-Z d] + / g; opozorilo (input.replace (regex, "#"));
Spodaj je kodna oznaka, ki jo želite prilagoditi. Kliknite zavihek "JavaScript", da si ogledate kodo JS.
Vaje
Za vaje lahko google “vaje za regex” in jih poskusite rešiti. Tukaj je, kaj lahko pričakujete, ko poskušate te vaje, glede na težavnostne stopnje.
Osnovno
Da bi lahko preverite geslo zadostuje za začetek. Torej, potrdite geslo za dolžino 8 do 16 znakov, alfanumerično z možnostjo izbire posebnih znakov.
Vmesni
Tukaj morate vaditi s podatki realnega sveta in se naučiti nekaj več regex točk pogledaj glava, poglej svoje trditve in ujemajočih se skupin;
- Potrdite kode PIN, heksadecimale, datume, e-poštni ID, plavajočo vejico.
- Zamenjajte začetno ničlo, presledke, niz ujemajočih se besed
- Izvlecite različne dele URL-ja
Napredno
Zgoraj opisane vaje lahko optimizirate - najbolj optimalni regex za e-pošto ima v njem na tisoče znakov - tako vzemite ga tako daleč, kot se počutite udobno in to je dovolj. Poskusite lahko tudi:
- Razčlenjevanje HTML-ja ali XML-ja (čeprav v resničnem svetu to ni priporočljivo, ker uporaba regularnega izraza za razčlenjevanje ne-pravilnega jezika, kot je HTML, nikoli ne bo naredil tega varnega.
- Zamenjava oznak
- Odstranjevanje komentarjev (razen pogojnih komentarjev IE)
Orodja
Orodja za vizualizirajte regex so ena najbolj kul stvari za mene. Če ste kdaj naleteli na dolg kompleksni regex, ga preprosto kopirajte v eno od teh orodij in boste lahko jasno videli tok. Poleg tega obstajajo številna orodja, ki jih lahko uporabite, da bi se pogovarjali s kodo regex. Prav tako predstavijo primere in cheatsheets skupaj s funkcijami za skupno rabo.
- Debuggex - črpa regex diagram kot na vaš vnos in lahko hitro delite s StackOverflow od tam.
- RegExr - s tem lahko preizkusite svoj izraz. Prav tako je dobil reference, cheatsheet in primeri, ki vam pomagajo.
- Refiddle - Trenutno, razen JavaScript, lahko tudi guliti z Ruby in. NET različice regex v njem.
Regex Cheatsheet
Žeton | Opredelitev |
[abc] | Vsak posamezen znak a, b ali c |
[^ abc] | Vsak drug znak, razen a, b ali c |
[a-z] | Znak med (vključno) od a do z |
[^ a-z] | Znak, razen od a do z |
[A-Z] | Znak med (vključno) od A do Z |
. | Vsak posamezen znak |
s | Vsak presledek |
S | Vsak znak, ki ni presledek |
d | Vsaka številka od 0 do 9 |
D | Vsaka brezmestna številka |
w | Vsak besedni znak (črka, številka in podčrtaj) |
W | Vsak ne-besedni znak |
(…) | Zajemite vse zaprto |
(a | b) | Ujemite bodisi a ali b |
a? | Znak a je bodisi odsoten ali prisoten enkrat |
a * | Znak a je odsoten ali pa je prisoten večkrat |
a+ | Znak a je prisoten enkrat ali večkrat |
a 3 | 3 zaporedja znakov a |
a 3, | 3 ali več pojavov znaka a zaporedoma |
a 3,6 | 3 do 6 pojavov znakov a zaporedno |
^ | Začetek niza |
$ | Konec niza |
b | Beseda meja. Če je znak zadnji ali prvi besedni besedni znak, ali če je med besedo ali ne-besednim znakom znak |
B | Meja brez besed |