Brezplačni pretvornik

Regex Tester

Takoj preizkusite regularne izraze in jih odpravite v brskalniku. Označite ujemanja, oglejte si skupine zajemanja in uporabite način zamenjave — brezplačen in zaseben.

//g
Zastavice:

O tem orodju

Regularni izrazi so domensko specifičen jezik za ujemanje vzorcev v besedilu. Del računalništva so že od leta 1968 in so zdaj vgrajeni v vsak sodoben programski jezik, urejevalnik besedil in orodje za iskanje v ukazni vrstici. Sintaksa je jedrnata, a nagnjena k napakam: majhne spremembe povzročijo subtilno drugačno vedenje ujemanja, zapleteni izrazi pa hitro postanejo neberljivi. Tester, ki prikazuje ujemanja v realnem času, ko urejate vzorec, je najučinkovitejši način za razvoj in preverjanje regularnega izraza.

Ta preizkuševalec se izvaja v vašem brskalniku z uporabo mehanizma regularnih izrazov JavaScript (istega, ki ga uporablja vaša aplikacija, če se izvaja v brskalniku). Vzorci in testno besedilo se posodabljajo reaktivno: vsaka sprememba enega ali drugega ponovno izvede ujemanje. Skupine za ujemanje so označene, zajete skupine so navedene in zastavice (neobčutljive na velike in male črke, večvrstične, globalne) so izpostavljene za testiranje.

Sintaksa regularnega izraza se med motorji rahlo razlikuje. JavaScript sledi specifikaciji ECMAScript; Python, PCRE (uporablja ga PHP in številni drugi), Java in Go imajo vsak svoja narečja s prekrivajočimi se, a ne enakimi funkcijami. Tukaj razviti vzorci uporabljajo sintakso ECMAScript; prenosljivost med motorji zahteva preverjanje dokumentacije vsakega cilja.

Zakaj uporabljati tester regularnih izrazov

Znano je, da je hrošče po uvedbi težko odpraviti. Vzorec, ki je videti razumen, se lahko ujema bolj ali manj od načrtovanega, odpove na robovih ali ima katastrofalno povratno sledenje pri določenih vhodih. Interaktivno testiranje vzorcev glede na reprezentativne vnose odkrije težave pred pregledom in izdelavo kode.

Vzorci imajo koristi tudi od dokumentacije. Prikaz regularnega izraza poleg vnosa, s katerim se mora ujemati, in vnosa, s katerim se ne bi smel ujemati, pomeni, da je namen ekspliciten. Prihodnji vzdrževalci (vključno z vami čez šest mesecev) cenijo dokumentirane testne primere bolj kot pametne enovrstične predloge.

Kako uporabljati

Vnesite vzorec, vnesite preizkusni vnos, oglejte si označene tekme v živo.

  1. Vnesite svoj vzorec: Vnesite vzorec regularnega izraza v polje za vzorec. Delujejo tako dobesedni regularni izrazi (/vzorec/zastavice) kot obrazci samo z vzorci; zastavice lahko nastavite prek vnosa zastavic.
  2. Dodajte testni vnos: Prilepite vzorčno besedilo, s katerim se mora vzorec ujemati (in idealno tudi besedilo, s katerim se ne bi smelo ujemati). Tester primerja vzorec z vnosom in poudari ujemanja.
  3. Nastavite zastave: Pogoste zastavice: g (globalno, poišči vse zadetke), i (neobčutljivo na velike in male črke), m (večvrstično, ^ in $ se ujemajo na začetku/koncu vrstice), s (dotall, . se ujema z novo vrstico), u (Unicode).
  4. Preglejte rezultate: Vsako ujemanje je pri vnosu označeno. Skupine zajemanja se prikažejo na seznamu z indeksom skupine in vrednostjo. Tester prikaže tudi število ujemanj in morebitne napake pri kompilaciji v vzorcu.

Pogosti primeri uporabe

Tehnične podrobnosti

Regularni izraz JavaScript sledi specifikaciji ECMAScript. Glavne značilnosti: razredi znakov ([abc], [^abc]), kvantifikatorji (*, +, ?, {n,m}), alternacija (|), združevanje ((...)), skupine za zajemanje in nezajemanje, pogled naprej in pogled nazaj (sodobni motorji), reference nazaj, imenovane skupine, ubežne vrednosti lastnosti Unicode (z zastavico u) in standardni nabor ubežnih zaporedij.

Pomembne razlike od PCRE in Pythona: podpora za pogled nazaj je v JavaScriptu (2018+); imenovane skupine uporabljajo sintakso (?<ime>...); nekateri ubežniki Unicode zahtevajo pravilno delovanje zastavice u. Vzorce, namenjene medjezikovni uporabi, je treba preveriti glede na dokumentacijo vsakega cilja.

Zmogljivost: motorji regularnih izrazov, ki temeljijo na sledenju nazaj (večina vključuje JavaScript), imajo lahko katastrofalno sledenje nazaj pri določenih patoloških vzorcih. Preizkusi, ki obesijo preizkuševalnik, so znak, da je treba vzorec poenostaviti – običajno z izogibanjem ugnezdenim kvantifikatorjem in dvoumnemu menjavanju.

Najboljše prakse

Pogosta vprašanja

Kateri okus regularnega izraza podpira to orodje?
Uporablja mehanizem RegExp, vgrajen v JavaScript, ki podpira standardno sintakso, vključno s pogledi vnaprej, pregledi za nazaj (v sodobnih brskalnikih), imenovanimi skupinami zajema in ubežnimi lastnostmi Unicode.
Ali lahko preizkusim zamenjave regularnih izrazov?
ja Preklopite v način zamenjave, da vnesete nadomestni vzorec. Uporabite lahko $1, $2 itd. za povratne reference skupine za zajem in $<name> za poimenovane skupine.
Zakaj se moj regularni izraz tu ujema drugače kot v Python/PHP?
Različni programski jeziki imajo nekoliko drugačne mehanizme regularnih izrazov. JavaScript ne podpira posesivnih kvantifikatorjev ali nekaterih funkcij, specifičnih za PCRE. Osnovna sintaksa (razredi znakov, kvantifikatorji, skupine) je enaka v vseh jezikih.
Ali orodje shrani moje vzorce regularnih izrazov?
Ne. Nič se ne shrani ali prenese. Orodje se v celoti izvaja v vašem brskalniku. Vzorce lahko dodate med zaznamke ali jih delite s kopiranjem niza regularnega izraza.
Kako se ujemam z dobesednim posebnim znakom?
Ubežite s poševnico nazaj. Za ujemanje z dobesedno piko: \. Za ujemanje dobesedne poševnice nazaj: \\. Znotraj znakovnih razredov [...] večina posebnih znakov izgubi svoj pomen.
Ali tester deluje na strežniku?
Ne. Prevajanje in ujemanje vzorcev se zgodita v vašem brskalniku z uporabo izvornega predmeta RegExp.
Ali lahko testiram vzorce za motorje brez JavaScripta?
Večinoma. Za preproste vzorce se glavni motorji strinjajo. Za napredne funkcije (lookbehind, atomske skupine, posesivni kvantifikatorji, ubežne lastnosti Unicode) potrdite glede na dokumentacijo ciljnega motorja.
Ali obvlada zelo velik vnos?
Do nekaj megabajtov deluje gladko. Večji vnosi lahko upočasnijo ali obesijo brskalnik, zlasti pri vzorcih, ki so nagnjeni k povratnemu sledenju.