Regelmæssigt udtryk: hvad det betyder

Hvad er et regelmæssigt udtryk?

Regex, eller regelmæssige udtryk, er et mønster, der matcher markering, der programmører bruges til at søge efter bestemte mønstre i tekst. Regulære udtryk kan søge efter næsten alt, afhængigt af hvordan du strukturerer dem; de bruges overalt af programmører, fordi de er uvurderlige til at hjælpe computere med at sortere data hurtigt og filtrere vrøvl, der ellers kunne forårsage fejl.

Regulære udtryk har en tendens til at se skræmmende ud, især for ikke-programmører. Se bare på dette:

[a-zA-Z0-9 _. + -] + @ [a-zA-Z0-9 _-] + \. [a-zA-Z0-9 _.-] +

Realistisk set er det faktisk ikke så slemt; at man matcher e-mail-adresser. Som du kan se, kan udtryk opdeles i individuelle tegn, som alle fortæller programmet, hvad de skal se efter.

Regulære udtryk er næsten universelle. Den samme general syntaks gælder på tværs af alle sprog med kun små variationer her og der. Denne vejledning indeholder eksempler fra både Python og JavaScript samt almindelig gammel regex. Hvis du arbejder med et andet sprog, skal du ikke bekymre dig. Næsten alt gælder også for dit valgte sprog.

instagram viewer

Regex Basics

Teknisk set er der ikke mange ting, der ikke kan betragtes som regulære udtryk, fordi bogstavelige tekststrenge er virkelig enkle. Hvis du skulle bruge 'abcde' som et regulært udtryk, ville programmeringssproget søge efter den nøjagtige streng.

Den første mere dynamiske matchende karakter at se på er '.' Karakter. I denne sammenhæng er priktegnet et jokertegn. Hvis du søger med det, returnerer dit program ethvert tegn, det finder som et match.

Så hvad hvis du vil kigge efter en bogstavelig prik? Det er heller ikke svært. Når du vil bruge en bogstavelig periode, skal du tilføje et tilbageslag inden det, som dette: '\.'

Backslash-tegn

Backslash spiller dog mange flere roller her. De fleste af de store regex-tegn inkluderer en tilbageslag.

Regulære udtrykscifre
Finde cifre med Regex i Python.

Se på et par eksempler:

  • \ d: Cifre fra 0 til 9
  • \ w: "Word Characters" bogstaver, cifre og understregning
  • \ s: Mellemrumstegn, herunder faner, nye linjer og almindelige mellemrum

Hvis du bruger stort bogstav i stedet for nogen af ​​disse, får du det omvendte. For eksempel giver '\ D' dig alt undtagen cifre.

Klasser

Det tilbageslagstegn er gode, men de er stadig slags stive. Generelt vil du gerne matche enten bogstaver, tal eller et par specialtegn.

Regelmæssige udtryksklasser
Brug af Regex-klasser til at finde bogstaver i Python.

Placer de tegn, du vil have matchet, i et par firkantede parenteser '[]', og dit program vil matche enhver af dem. Dette kaldes en regex-klasse.

[abcd1234]

Ovenstående eksempel er stadig ineffektivt. I stedet kan du bruge en bindestreg til at angive et interval; for eksempel alle små bogstaver:

[a-z]

Du kan også angive områder. Nedenstående udtryk matcher alle bogstaver og cifre:

[a-zA-Z0-9]

Hvis du vil medtage bindestreg i dit sæt tegn, skal du sætte det fast i slutningen for at forhindre, at det evalueres. Det fungerer også med andre specialtegn.

[a-zA-Z0-9 _. + -]

Som med tilbageslagstegnene kan du også få det omvendte resultat her. Placer et '^' i begyndelsen af ​​din klasse for at udelukke dem fra dine resultater. Dette udelukker cifre og flere specialtegn fra resultaterne:

[^0-9_+.-]

Grupper

Grupper bruger et par parenteser til at klumpe dit udtryk fra hinanden. De grupperer data, så dit program kan målrette og bruge det. Når et program fjerner ' http://' fra en webadresse bruger det regex-grupper til at opnå det. Regex lader det målrette mod bestemte kriterier, og grupperne lader det adskille sektioner ud.

Regelmæssige udtryksgrupper
Regex-grupper hjælper med at finde webadresser i JavaScript.

Grupper giver dig også mulighed for at vælge mellem det ene eller det andet mønster. De anvender et enkelt '|' at fungere som "eller" i udtrykket. Udtrykket nedenfor vil matche nogen af ​​disse: .com, .org, .net, .edu eller .gov.

\. (com | org | net | edu | gov)

Kvantifikatorer

Kvantificeringsanordninger er præcis, hvad de lyder. De fortæller udtrykket mængden af ​​et tegn, du leder efter. Disse er de tilgængelige kvantificeringsmidler:

  • *: Nul eller mere
  • +: En eller flere
  • ?: Nul eller en
  • {3}: Beløbet i parentes

Placer en af ​​disse kvantificeringsmidler i slutningen af ​​det tegn eller den klasse, du vil specificere mængden af. Dette eksempel kigger efter standard syvcifrede telefonnumre:

\ d {3} [. * -] \ d {3} [. * -] \ d {4}

Ankre og grænser

Regulære udtryk giver dig mulighed for at søge efter mønstre baseret på deres placering i en tekststreng eller omkring et ord.

Ankre til regulære udtryk
Regex-ankre bruger positionering til at finde et match i JavaScript.

Dette er dine primære muligheder:

  • ^: Begyndelsen på en streng
  • $: Slutningen af ​​en streng
  • \ b: Ordgrænse (begyndelsen eller slutningen af ​​et ord)

Hvis du kun vil finde strenge, der begynder med et bogstav, kan du prøve:

^ [a-zA-Z]

Sig, at du kun vil finde ordet "det", ikke ord, der indeholder bogstaverne I og T; det er her, du bruger ordgrænser.

\ b (i | I) t \ b

Afsluttende tanker

Regulære udtryk kan spare dig for masser af hovedpine, når du programmerer. Forestil dig at prøve at skrive logik for at opnå et af eksemplerne i denne artikel. Det ville være et forfærdeligt rod. Når du er blevet fortrolig med dem, vil du sandsynligvis finde dig selv virkelig nyder kraften og fleksibiliteten ved regex.