Beginner's Guide to Regular Expression (Regex)
Et vanlig uttrykk er et sett med tegn som danner et mønster som kan søges i en streng. Regex kan brukes til validering slik som å validere kredittkortnumre, for søk, dvs. via komplekse tekstkomponenter, og for å erstatte matchet tekst med en annen streng. Den har også god støtte for flere språk - lære den en gang, og du kan bruke den på tvers av mange programmeringsspråk.
Jeg har sett få folk ta en første titt på regex, og ignorere det helt. Jeg klandrer dem ikke; regex syntaks er kompleks og vil gjøre mange cringe akkurat som de kommandolinjene, bare verre. Men så er hver ny ting skummelt og virker umulig å lære først. Så, låner Horatius ord, jeg sier dette; Begynn, vær modig, og vent på å være klok .
Om Regex
Regex hadde sine røtter i nevrovitenskap og matematikk og ble først implementert i programmering i 1968 av Ken Thompson i QED tekstredigerer for tekstsøk. Nå er det en del av mange programmeringsspråk som Perl, Java, Python, Ruby og JavaScript.
La oss se på noen eksempler på hvordan regex fungerer.
Jeg bruker JavaScript i eksemplene mine. Nå, for å passere nybegynnernivå, må du lære alle tegnene, klassene, kvantifiseringene, modifiseringene og metodene som brukes i regex. Her er en lenke til Mozilla Developer Networks Regular Expression-side hvor du kan se et bord som inneholder alle disse. Du kan også henvise til cheatsheet på slutten av dette innlegget med de mest brukte tegnene.
La oss se et enkelt eksempel med en forklaring. Dette er en regex.
Dette er hva ovennevnte regex vil se etter i en linje, et tegn 'B' etterfulgt av minst ett av tegnene mellom (og inkludert) 'a' til 'z', 'A' til 'Z' og tallene 0 til 9.Her er et utvalg av kamper i en linje uthevet:
Kurv , pære, B12 vitamin, BaSo4 , N BC selskap
Ovennevnte regex vil stoppe søket på Kurv og returnere en positiv respons. Det er fordi den globale modifikatoren ' g
' må spesifiseres hvis du vil at regex skal se på alle mulige kamper.
Nå, la oss se hvordan du bruker dette uttrykket i JavaScript. Testmetoden går: hvis det ble funnet en returrekke, true
, annet false
.
var input = "din teststreng", regex = / B [a-zA-Z \ d] + /; hvis (! regex.test (input)) varsling ('Ingen kamp er funnet'); Ellers varsling ('En kamp er funnet');
La oss prøve en annen metode: match
returnerer kampene som finnes i en matrise.
var input = "din teststreng", regex = / B [a-zA-Z \ d] + / g, / * Jeg har lagt den globale modifieringen 'g' til regex for å få alle kampene * / ary = input.match (regex); hvis (ary === null) varsling ('Ingen kamp er funnet'); ellers varsel ('kampene er:' + ary.toString ());
Hva med streng replace
? La oss prøve det med regex nå.
var input = "din teststreng", regex = / B [a-zA-Z \ d] + / g; varsling (input.replace (regex, "#"));
Nedenfor er en kodepen for deg å finjustere. Klikk på "JavaScript" -fanen for å vise JS-koden.
Øvelser
For øvelser kan du google "regex øvelser" og prøve å løse dem. Her er hva du kan forvente når du prøver disse øvelsene, i henhold til vanskelighetsgrader.
grunn~~POS=TRUNC
For meg å kunne validere et passord er nok til å begynne med. Så bekreft et passord for 8 til 16 tegnlengde, alfanumerisk med ditt valg av spesialtegn tillatt.
mellom~~POS=TRUNC
Det er her du bør øve med mer virkelige verdensdata og lære noen flere regex poeng som lookahead, lookbehind påstander og matchende grupper ;
- Bekreft PIN-koder, hexadecimaler, datoer, e-post-ID, flytpunkt.
- Erstatt trailing null, hvite rom, et sett med matchende ord
- Trekk ut forskjellige deler av en URL
Avansert
Du kan optimalisere de ovennevnte øvelsenees løsninger - den mest optimale regexen for e-post har tusenvis av tegn i den - så ta den så langt du føler deg komfortabel med, og det er nok . Du kan også prøve:
- Parsing HTML eller XML (selv om det i den virkelige verden er motet til å gjøre det fordi det å bruke vanlig uttrykk for å analysere ikke-vanlig språk som HTML, vil aldri gjøre det tåpelig. Plus XML-parsing er en vanskelig oppgave, mer egnet for avanserte brukere)
- Bytte ut koder
- Fjerner kommentarer (unntatt IE betingede kommentarer)
Verktøy
Verktøy for å visualisere regex er en av de kuleste tingene der ute for meg. Hvis du noen gang kommer over en lang kompleks regex, kan du bare kopiere dem inn i et av disse verktøyene, og du vil kunne se strømmen tydelig. Dessuten er det mange verktøy du kan bruke til å lure med regex-koden. De viser også eksempler og cheatsheets sammen med delfunksjoner.
- Debuggex - Det trekker et regexdiagram som per din innspilling, og du kan gjøre en rask deling til StackOverflow derfra.
- RegExr - Du kan teste din regex med denne. Det har også referanse, et cheatsheet og eksempler for å hjelpe deg.
- Forfylle - For øyeblikket, annet enn JavaScript, kan du også lure med Ruby og .NET versjoner av regex i den.
Regex Cheatsheet
pollett | Definisjon |
[Abc] | Ethvert enkelt tegn a, b eller c |
[^ Abc] | Enhver annen person enn a, b eller c |
[A] | Karakter mellom (inkludert) a til z |
[^ Az] | Tegn unntatt fra a til z |
[AZ] | Karakter mellom (inkludert) A til Z |
. | Ethvert enkelt tegn |
\ s | En hvilken som helst whitespace karakter |
\ S | Enhver ikke-hvitt plass karakter |
\ d | Et hvilket som helst tall fra 0 til 9 |
\ D | Enhver ikke-siffer |
\ w | Ethvert ordkarakter (brev, tall og understrek) |
\ W | Enhver ikke-ord karakter |
(...) | Fang alt vedlagt |
(A | b) | Match enten a eller b |
en? | Tegn a er enten fraværende eller til stede en gang |
en* | Tegn a er enten fraværende eller tilstede flere ganger |
a + | Tegn a er til stede en eller flere ganger |
en {3} | 3 forekomster av karakter en etterfølgende |
en {3, } | 3 eller flere forekomster av karakter en etterfølgende |
a {3, 6} | 3 til 6 forekomster av karakter en etterfølgende |
^ | Start av streng |
$ | Slutten av strengen |
\ b | Et ordgrense. Hvis et tegn er et ords siste eller første ordkarakter eller Hvis et tegn er mellom et ord eller et ikke-ordtegn |
\ B | Ikke-ordgrense |
Nå Les: Vanlige uttrykk: 30 Nyttige verktøy og ressurser
50 nettsteder som betaler deg for ting du gjør daglig
Folk over hele kloden er på utkikk etter nye måter å tjene ekstra penger, og de går i lengder for å gjøre det. Imidlertid er nettbasert arbeidsmarked så omfattende, og det finnes en rekke kilder hvorfra du kan tjene penger ved å gjøre ting du allerede gjør i ditt vanlige liv.Du har kanskje hørt om freelance jobb nettsteder for designere og utviklere, men disse nettstedene imøtekomme til en bestemt nisje. Her er en
8 Praktiske tips for å sikre dine Cloud-data
Ikke lenger å ta med tommelfingeren eller bærbare harddisker, uansett hvor du går, fordi skybaserte lagringstjenester er her for å bli . Fra Google Disk til Dropbox lagrer disse skyvedistribusjonene dataene dine online og gir deg enkel tilgang til dem på ethvert sted og tidspunkt hvor Internett-tilkobling er tilgjengelig .Enke