Hjem » Siste artikler » Regex for nybegynnere: slik mestrer du enkle mønster i tekst uten å gå deg vill

Regex for nybegynnere: slik mestrer du enkle mønster i tekst uten å gå deg vill

Hovedillustrasjon
Hovedillustrasjon. Foto: Chris Ried / Unsplash.

Regulære uttrykk, ofte forkortet til regex, virker mystiske ved første blikk. De er fulle av spesielle tegn, skråstreker og krøllparenteser som lett skremmer nye utviklere bort.

Likevel er regex et av de mest nyttige verktøyene du kan lære deg tidlig. Du kan finne, sjekke og endre tekst på noen få tegn, i stedet for å skrive lange kontrollstrukturer. Denne guiden viser deg de viktigste grunnene til å lære regex, og hvordan du kommer trygt i gang.

Hva er regex, og når trenger du det?

Regex er et lite språk for å beskrive mønster i tekst. Der vanlig søk leter etter en fast tekststreng, kan regex beskrive mer fleksible ting, som “en e-postadresse”, “et norsk postnummer” eller “alle tall i en tekst”.

Mange språk og verktøy har støtte for regex: for eksempel Python, PHP, Java, .NET, text editorer og kommandolinjen. Lærer du grunnprinsippene, kan du bruke dem nesten overalt, selv om selve syntaksen kan variere litt.

Faste tegn og enkle spesialtegn

Start enkelt: et regex somheifinner bare teksten “hei”. Skriver duhei verdenfinner det akkurat de to ordene etter hverandre. Så langt er regex lik vanlig tekstsøk.

Det blir interessant når du vil si “hvilket som helst tegn” eller “et tall”. De viktigste spesialtegnene som går igjen i de fleste språk, er:

  • .ett vilkårlig tegn (bokstav, tall eller symbol)
  • dett siffer (0 til 9)
  • sett mellomromstegn (mellomrom, tab, linjeskift)
  • wen “ordkarakter” (som regel bokstav, tall eller understrek)

Skal du for eksempel finne et tall med tre sifre, kan du skriveddd. Det treffer “123”, “007” og “999”, uansett hvor i teksten.

Gjenta mønstre med kvantorer

Det blir raskt tungvint å skrive samme symbol mange ganger. Derfor finnes kvantorer, som sier hvor mange ganger et tegn eller en gruppe kan gjentas.

Noen nyttige kvantorer er:

  • ?0 eller 1 gang (valgfritt)
  • *0 eller flere ganger
  • +1 eller flere ganger
  • {n}n ganger nøyaktig
  • {min,max}mellom min og max ganger

Eksempler:

  • d+betyr ett eller flere siffer, så det kan være “3”, “42” eller “2026”.
  • d{4}betyr nøyaktig fire sifre, for eksempel et årstall “2024”.
  • d{4,6}betyr 4 til 6 sifre, for eksempel “1234” eller “987654”.

Typiske hverdagsmønstre: postnummer, telefon og e-post

La oss se på noen enkle mønstre du faktisk kan bruke. Målet er ikke å dekke alle detaljer, men å gi deg byggesteiner du forstår.

Norsk postnummer har 4 sifre. Et veldig direkte regex for å sjekke det er:

^d{4}$

Her betyr^“start på teksten” og$“slutt på teksten”. Dermed godtas bare tekst som består av nøyaktig fire sifre, ingenting mer.

Enkel norsk telefonkontroll

Telefonnumre er mer varierte, og virkelige behov kan være kompliserte. Likevel kan et grunnleggende mønster hjelpe deg å sile ut åpenbare feil.

Et eksempel på et veldig forenklet mønster for et åttesifret nummer, der du tillater mellomrom inni, kan være:

^d{2}s?d{2}s?d{2}s?d{2}$

Dette uttrykket sier: to sifre, så valgfritt mellomrom, gjentatt fire ganger. Det aksepterer både “12345678” og “12 34 56 78”. For mer seriøs validering bør du lese oppdaterte retningslinjer og eventuelt kombinere regex med ekstra logikk.

En forsiktig tilnærming til e-post

Tematisk illustrasjon
Tematisk illustrasjon. Foto: Rishi / Pexels.

E-postadresser kan være overraskende komplekse. Mange eksempler på nettet er enten for strenge eller for slappe. En praktisk strategi er å bruke et relativt enkelt regex, og heller la mer avansert validering skje ved å sende en bekreftelseslenke.

Et moderat enkelt mønster kan for eksempel si: noen tegn, et alfakrøll, noen tegn, et punktum og et domenenavn med bokstaver. Prinsippet er at du prøver å fange åpenbare feil, ikke å være 100 prosent perfekt.

Gruppering og alternativer

For å bygge litt mer fleksible mønstre, kan du gruppere ting med parenteser og bruke|som “eller”.

Eksempler:

  • (jpg|png|gif)betyr enten “jpg” eller “png” eller “gif”.
  • hei (verden|du)treffer enten “hei verden” eller “hei du”.

Du kan kombinere grupper med kvantorer. For eksempel kan(ha)+treffe “ha”, “haha” og “hahaha”. Gruppen “ha” kan da gjentas én eller flere ganger.

Hvordan teste regex uten å ødelegge noe

Mange blir usikre fordi regex kan virke som svart magi. Den beste motgiften er å teste mønstrene trygt, med konkrete eksempler.

Noen tips til trygg utprøving:

  • Bruk en nettbasert regex-tester der du kan lime inn tekst og se treff direkte.
  • Start med en veldig enkel variant og gjør små justeringer, i stedet for å skrive et langt uttrykk på første forsøk.
  • Test både data du forventer skal godkjennes, og data du vil avvise.

Hvis du skal bruke regex i et produksjonssystem, er det lurt å legge til automatiske tester rundt mønstrene. Da oppdager du tidlig hvis senere endringer gir uventet oppførsel.

Vanlige fallgruver du bør unngå

Den største feilen er ofte å prøve å løse alt med ett gigantisk uttrykk. Det blir vanskelig å lese, vedlikeholde og feilsøke. Del heller problemet i mindre biter hvis du kan.

En annen klassiker er å bruke.*ukritisk, særlig i kombinasjon med+og manglende begrensninger. Det kan gjøre søket tregt eller treffe mer enn du hadde tenkt. Vær spesifikk når det er mulig, og bruk kvantorer med tydelige grenser.

Slik lærer du videre på en strukturert måte

Du trenger ikke kunne hele regex-språket for å ha stor nytte av det. En god progresjon for videre læring kan være:

  1. Faste tegn, punktum og de grunnleggende spesialtegnene d, s og w.
  2. Kvantorer som ?, *, + og {n,m}.
  3. Gruppering med parenteser og alternativer med |.
  4. Start- og slutt-ankere (^ og $) for å kontrollere hele strenger.

Lag små oppgaver til deg selv: finn alle tall i en tekst, hent ut domenenavn fra URL-er, eller filtrer logglinjer med et bestemt mønster. Jo mer du knytter regex til konkrete problemer, desto lettere blir det å huske.

Oppsummering: tenk mønster, ikke magi

Regex handler til syvende og sist om å beskrive mønstre i tekst på en presis måte. Når du tenker “hvordan ser dette ut som et mønster” i stedet for “hvordan skriver jeg denne magiske strengen”, blir det mye mindre skummelt.

Start i det små, test ofte og aksepter at du slår opp syntaks underveis. Med noen få grunnbyggesteiner har du et kraftig verktøy du kan ta med deg til nesten alle språk og prosjekter du jobber med.

0 kommentarer