← Alle gereedskap

Regex-toetser

Bou, toets en ontfout reguliere uitdrukkings regstreeks teen jou eie teks in die blaaier. Leer karakterklasse, kwantifiseerders, ankers, groepe en vlae.

Regex-toetser: bou en ontfout patrone teen jou eie teks

'n Reguliere uitdrukking is 'n klein taal om die vorm van teks te beskryf. In plaas daarvan om te vra "is hierdie presiese woord hier?", laat 'n regex jou vra "is daar 'n string wat so lyk?" Dit is wat dit kragtig maak om teks te vind, te valideer, te onttrek, en te vervang in kode-redigeerders, loglêers, vorminvoere, en skrifte. Dit is ook wat dit maklik maak om verkeerd te kry, want 'n patroon wat goed lyk in jou kop, kan stilweg te veel, te min, of niks ooreenstem nie.

Dit is waarom interaktief toets beter is as raai. Wanneer jy 'n patroon tik en kyk hoe ooreenstemmings oplig oor werklike voorbeeldteks, kry jy onmiddellike terugvoer: jy sien wat gevang is, wat deurgeglip het, en watter vasleggroep watter stuk gegryp het. Ons Regex-toetser loop heeltemal binne jou blaaier. Jou patroon en jou voorbeeldteks verlaat nooit die blad nie, sodat jy loglyne, e-posse, of produksiedata kan plak sonder om enigiets na 'n bediener te stuur.

Gloeiende sianies filter wat spesifieke goue tekens vang uit 'n vloeiende stroom data op 'n donker indigo agtergrond
'n Regex tree op soos 'n filter, en kies net die tekens wat by jou patroon pas.

Die boustene werd om te ken

Die meeste alledaagse patrone word saamgestel uit 'n klein stel stukke. Leer hierdie en jy kan die meerderheid regexe lees wat jy in die wild teëkom.

Karakterklasse beskryf 'n stel toegelate karakters. [aeiou] pas by enige enkele vokaal, [0-9] pas by een syfer, en [a-zA-Z] pas by een letter. 'n Dakteken binne die hakies ontken die stel, sodat [^0-9] "enige karakter wat nie 'n syfer is nie" beteken. Kortpaaie bespaar tikwerk: \d is 'n syfer, \w is 'n woordkarakter (letters, syfers, onderstreep), \s is witruimte, en die punt . pas by byna enige enkele karakter.

Kwantifiseerders sê hoeveel keer die vorige stuk mag herhaal. * beteken nul of meer, + beteken een of meer, en ? beteken nul of een (opsioneel). Vir presiese getalle beteken {3} presies drie en {2,4} twee tot vier. So pas \d{4} by 'n vier-syfer-jaar en colou?r pas by albei spellings.

Ankers heg 'n patroon aan 'n posisie eerder as 'n karakter. ^ pas by die begin van die teks, $ pas by die einde, en \b merk 'n woordgrens. Die patroon ^Error pas net by lyne wat met "Error" begin, wat presies is wat jy wil hê wanneer jy logs deurgaan.

Groepe draai deel van 'n patroon in hakies toe, beide om 'n kwantifiseerder op verskeie karakters tegelyk toe te pas en om die ooreengestemde teks vas te lê vir hergebruik. In (\d{4})-(\d{2})-(\d{2}) vang elke groep 'n datumkomponent wat jy later kan uithaal. Alternasie met die pyplyn tree op soos "of": cat|dog|fish pas by enige een van die drie woorde.

Patrone wat jy werklik sal gebruik

'n Paar herhalende take dek die meeste werklike werk. Om iets e-pos-agtig te vang, is [\w.+-]+@[\w-]+\.[\w.-]+ 'n pragmatiese beginpunt; volledige e-posvalidering volgens die formele spesifikasie is berug ingewikkeld, en 'n los patroon is gewoonlik die regte keuse om kandidate uit te lig eerder as om gebruikers te verwerp.

Vir getalle gryp \d+ reekse syfers, terwyl -?\d+(\.\d+)? opsionele negatiewe en desimale pas. Om voor- en agterlopende witruimte te knip, pas ^\s+|\s+$ en vervang dit met niks. Om herhaalde woorde te vind, pas die terugverwysingspatroon \b(\w+)\s+\1\b 'n woord gevolg deur homself, waar \1 terugverwys na die eerste vasgelegde groep.

Geselekteerde woorde wat goud gloei en uitgelig word binne 'n vloeiende rivier van sianies teks-agtige deeltjies op donker navy
Lewendige uitligting wys presies watter spanne van jou teks 'n patroon ooreenstem.

Vlae verander hoe ooreenstemming werk

Vlae is skakelaars wat die hele patroon wysig. Die globale vlag (g) vind elke ooreenstemming in plaas daarvan om by die eerste te stop, wat is wat jy wil hê wanneer jy alle voorkomste uitlig. Die hoofletter-onsensitiewe vlag (i) laat error ooreenstem met "Error" en "ERROR" eweveel. Die multiline-vlag (m) verander ^ en $ sodat hulle by die begin en einde van elke lyn ooreenstem, nie net die hele teks nie, wat noodsaaklik is vir lyn-vir-lyn logwerk. Ander nuttige vlae sluit in s (dotall, wat die punt toelaat om nuwe lyne te pas) en u vir volledige Unicode-hantering.

Geure verskil effens per taal

Regex is 'n familie van dialekte, nie een vaste standaard nie. JavaScript, Python, PCRE (PHP), Java, .NET, Go, en Rust stem saam oor die kernsintaksis hierbo, maar hulle verskil aan die rande: lookbehind-ondersteuning, genoemde-groep-sintaksis ((?<name>...) teenoor (?P<name>...)), Unicode-eienskaponsnappe, en watter vlae bestaan, wissel almal. 'n Patroon wat in een enjin werk, mag 'n klein aanpassing in 'n ander nodig hê, dus loon dit om te toets teen die geur wat jy werklik verskeep. Wanneer jy 'n patroon reg het, kan ons ander ontwikkelaarinstrumente en teksinstrumente help met die omliggende werk van skoonmaak, enkodering, en transformering van die data wat jy pas ooreengestem het.

Gereelde vrae

Word my teks na 'n bediener gestuur?

Nee. Die Regex-toetser loop heeltemal binne jou blaaier. Jou patroon en voorbeeldteks bly op jou toestel en word nooit opgelaai nie, sodat dit veilig is om sensitiewe data te plak.

Watter regex-geur gebruik hierdie instrument?

Dit gebruik die JavaScript-regex-enjin ingebou in jou blaaier. Die kernsintaksis stem ooreen met wat jy van die meeste tale ken, alhoewel sommige gevorderde kenmerke effens verskil van PCRE, Python, of .NET.

Wat is die verskil tussen gulsige en lui ooreenstemming?

Standaard is kwantifiseerders gulsig en gryp soveel teks as moontlik. Om 'n vraagteken by te voeg, maak hulle lui, sodat hulle so min as moontlik gryp. Byvoorbeeld, die patroon punt-ster is gulsig terwyl punt-ster-vraagteken lui is.

Hoe pas ek 'n letterlike spesiale karakter?

Ontsnap dit met 'n skuinsstreep. Om 'n werklike punt te pas, skryf skuinsstreep-punt. Dieselfde geld vir ander metakarakters soos hakies, blokhakies, die plusteken, en die vraagteken.

Waarom stem my patroon met niks ooreen nie?

Algemene oorsake is 'n ontbrekende globale vlag, ankers wat die ooreenstemming aan die verkeerde posisie vasnael, 'n onontsnapte spesiale karakter, of gulsige kwantifiseerders wat die grens waarop jy gereken het, oorskry. Toets stuk vir stuk om die skuldige te vind.

Kan ek dele van die ooreenstemming vasvang?

Ja. Draai 'n deel van die patroon in hakies toe om 'n vasleggroep te skep. Elke groep word apart gerapporteer, wat jou toelaat om velde soos die jaar, maand, en dag uit 'n datum te onttrek.