Utilia

Diagram regularnega izraza

Spremeni regularni izraz JavaScripta v jasen železniški diagram s skupinami, alternativami, zankami in pogledi okoli, nato ga izvozi kot SVG ali PNG.

Zastavice: poljubne od d g i m s u v y. Prilepiš lahko tudi literal, na primer /\d+/g.

Zajemalne skupine
–
Alternative
–
Kvantifikatorji
–

Železniški diagram

Modra: dobesedno besedilo. Zelena: vrste znakov in množice (rdeča: izključena množica). Vijolična: sidra in meje. Oranžna: povratne reference. Črtkani okvirji: skupine in pogledi okoli. Pot nad elementom ga preskoči, pot pod njim ga ponovi.

Kako vizualizirati regularni izraz

  1. Vzorec vpiši ali prilepi v Regularni izraz. Prilepiš lahko tudi celoten literal JavaScripta, na primer /^\d{3}-\d{4}$/gm: poševnice se odstranijo, zastavice pa se samodejno prenesejo v polje za zastavice.
  2. Po potrebi dodaj zastavice (poljubne od d g i m s u v y). Zastavice spremenijo, kako so nekateri deli narisani: z m postaneta ^ in $ »začetek vrstice« in »konec vrstice«; s s postane pika »kateri koli znak«.
  3. Diagram se posodablja med tipkanjem. Nariši diagram ga po potrebi nariše znova, Naslednji primer pa se sprehodi skozi nekaj pogostih vzorcev (e-pošta, telefonska številka, šestnajstiška barva, cena, oznaka HTML, URL).
  4. Diagram beri od leve proti desni, od polne pike do pike z obročem. Vsaka pot, ki ji lahko slediš, je niz, ki ga vzorec lahko ujame.
  5. Prenesi SVG da ostro vektorsko sliko (dokumentacija, predstavitve), Prenesi PNG sliko z dvojno ločljivostjo, Kopiraj kodo SVG pa kodo prilepiš v spletno stran.

Z miško se pomakni nad polje, da vidiš del vzorca, iz katerega izhaja, in njegov položaj.

Kako brati železniški diagram

Železniški diagrami, imenovani tudi sintaktični diagrami, opisujejo slovnico kot niz tirov. Regularni izraz je natanko taka slovnica, zato risba njegovo zgradbo pokaže veliko bolje kot gosta vrstica simbolov:

  • Modra polja so dobesedno besedilo, ki se mora pojaviti, kot je zapisano, na primer »@«.
  • Zelena polja so vrste znakov (\d števka, \w znak besede, . kateri koli znak …) in razredi znakov. Razred, kot je [\w.+-], postane polje z naslovom »eno od«, ki našteva vsak element; negirani razred [^…] je rdeč z naslovom »nobeno od«.
  • Vijolične tablete so sidra in meje: začetek in konec besedila ali vrstice, meja besede \b. Ujemajo se z mestom, ne z znakom.
  • Oranžna črtkana polja so povratne reference, kot sta \1 ali \k<ime>: isto besedilo, kot ga je prej ujela skupina.
  • Črtkani okvirji so skupine. Zajemalne skupine so oštevilčene po vrstnem redu njihovega odpirajočega oklepaja (»skupina #2 »domena««); nezajemalne skupine (?:…) niso uokvirjene. Pogledi naprej in nazaj dobijo rožnat okvir z oznako »sledi« ali »pred tem je«, ker preverjajo besedilo, ne da bi ga porabili.
  • Vzporedni tiri so alternative, ločene z |.
  • Tir nad elementom omogoča, da ga preskočiš (?, *, {0,n}). Tir pod njim s puščico se zanka nazaj in ga ponovi (+, *, {n,m}). Število ponovitev, ki ni običajno, je zapisano pod zanko, na primer »od 2-krat do 5-krat«, leni kvantifikatorji (+?, *?) pa so označeni z »len«.

Sporočila o napakah z mesti

Vzorec preveri pogon regularnih izrazov JavaScripta v tvojem brskalniku, zato to orodje sprejme natanko to, kar z enakimi zastavicami sprejme new RegExp(). Ko pogon vzorec zavrne, orodje pokaže na problematičen znak z njegovim mestom in oznako pod vzorcem. Prepozna nesparjen ), skupino, ki ni nikoli zaprta, razred znakov brez ], kvantifikator, ki nima česa ponoviti (*a, a|+), osamljeno poševnico nazaj na koncu in kvantifikatorje {n,m}, kjer je n večji od m. Druge napake, na primer povratna referenca na ime skupine, ki ne obstaja, so prikazane s sporočilom brskalnika.

Izraz se samo prevede, da se preveri: nikoli se ne izvede nad nobenim besedilom in nič ne zapusti tvojega brskalnika.

Pogosta vprašanja

Katero različico regex to orodje podpira?

Regularne izraze JavaScripta (ECMAScript), vključno z imenovanimi skupinami, pogledom nazaj, ubežnimi zaporedji lastnosti Unicode \p{…} in zastavico v z gnezdenimi razredi. Vzorci iz PCRE, Pythona ali Jave običajno prav tako delujejo, vendar je sintaksa, značilna za te pogone, na primer posesivni kvantifikatorji ali (?P<ime>…), zavrnjena, ker je brskalnik ne podpira.

Zakaj moja nezajemalna skupina ni narisana kot polje?

Skupina, kot je (?:\.[\w-]+), samo združuje elemente, da se kvantifikator ali alternativa nanaša na vse. Ne ustvari zajema, zato diagram pokaže njeno vsebino in zanko brez okvirja, kar ohranja risbo berljivo. Skupine z vgrajenimi zastavicami so uokvirjene in označene s temi zastavicami.

Kakšna je razlika med tirom za preskok in zanko?

Tir nad elementom pomeni »nič ponovitev je dovoljenih«, tir pod njim pa »lahko se ponovi«. ? ima samo zgornji tir, + samo spodnjega, * pa oba. Pri kvantifikatorju, kot je {2,4}, ima zanka oznako »od 2-krat do 4-krat«.

Ali lahko diagram uporabim v svoji dokumentaciji?

Da. Izvoz SVG je samostojna vektorska datoteka z belim ozadjem in temnimi črtami, idealna za datoteke README, wikije in predstavitve. Izvoz PNG je narisan v dvakratni velikosti risbe na zaslonu, za ostrino na zaslonih z visoko gostoto.

Ali je velikost omejena?

Vzorci so lahko dolgi do 5000 znakov. Zelo dolgi izrazi dajo širok diagram, ki ga lahko vodoravno drsiš; razdelitev na poimenovane dele pogosto olajša vzdrževanje diagrama in regularnega izraza.