Har du noen gang prøvd å finne et gjentagende mønster i et stykke tekst? Du har kanskje brukt noe som søkefunksjonen i nettleseren eller tekstbehandleren, men når du trenger å finne noe mer komplekst, kan det være som å finne en nål i den ordspråklige høystakken.
Heldigvis er det en måte å plukke ut presise mønstre i tekst helt ned til karakteren. Det kalles regulære uttrykk (RegEx), og det lar deg bli en mester i å søke gjennom tekst.
Hvor kan jeg bruke RegEx?
Selv om Unix og Linux gjorde dem populære, er vanlige uttrykk tilgjengelig i en rekke pakker, inkludert Microsoft Word.

Vanlige uttrykk brukes mest i flere bemerkelsesverdige Linux-programmer, inkludert grep
, Awk
og Sed
.
Det kan for eksempel være lurt å sjekke USB-enhetene på PC-en. Ved hjelp av lspci
, vil du se en liste over alle enhetene, og du må finne USB-oppføringene selv. Du kan i stedet bruke følgende for å bare vise USB-enhetene:
lspci | grep "USB"
Dette er det enkleste eksemplet på RegEx i aksjon. Det er den mest populære måten å bruke regulære uttrykk på terminalen, men ikke den eneste. I dag kan du finne RegEx-støtte i mange forskjellige typer programvare, fra tekstredigerere til filbehandlere.
Finne mønstre
Du har sannsynligvis brukt *
karakter, som fungerer som et jokertegn når du velger filer eller mapper i terminalen. Hvis du for eksempel vil liste alle JPG-filer i en mappe, kan du bruke:
ls *.jpg
RegEx-ekvivalenten til ovenstående vil være:
ls | grep -E ".jpg"

For å søke etter både jpg- og png-filer, bruk:
ls | grep -E "(.jpg|.png)"
Rekkevidder
Hvis du vil søke etter et spesifikt utvalg av tegn i stedet for et mønster, kan du gjøre det ved å definere det i parentes. Hvis du for eksempel bruker [a-z]
som ditt mønster, vil dette matche enhver streng som består av små bokstaver i alfabetet.
Som du kanskje har gjettet, [A-Z]
ville bare velge store bokstaver. For å velge hvilket som helst utvalg av bokstaver, både i store og små bokstaver, vil uttrykket endre seg til [a-zA-Z]
.
For å finne et bestemt antall forekomster av mønsteret ditt, kan du oppgi det i krøllete parenteser. {5}
ville returnere fem forekomster av mønsteret ditt. Du kan også bruke tallområder, så {5,10}
vil gi deg fem til ti tilfeller.
Metakarakterer
I vanlige uttrykk kan du også søke etter deler av en streng med to tegn som kalles metategn. De ligner jokertegnkampene du kanskje har brukt i skallet.
Den primære er den enkle prikken, som står for ethvert annet enkelt tegn. Hvis du brukte mønsteret c.ll
, det ville matche «celle», men også «cull» og «call.»
Ved å angi en stjerne etter en prikk, kan du bruke den til å matche et uendelig antall tegn. For eksempel, .*board
vil være en kamp for både «tastatur» og «skateboard.» selv om “nøkkel” og “skøyte” har et annet antall bokstaver.
Flukt
Du har kanskje lagt merke til at i vårt eksempel, der vi valgte forskjellige typer bildefiler, brukte vi tilbakeslag før perioden (“ .jpg”). Slik unnslipper du spesialtegn i RegEx.
Hvis vi ikke brukte dem, ville mønsteret vårt ikke stemme overens med utvidelsene til filene, strenger som «.jpg» og «.png», men ville også matche «ajpg» og «opng.» Huske, .
er et jokertegn som samsvarer med alle tegn.
Ankere og grenser
Ankere og grenser lar deg definere mer presist hva du søker.
For å finne bare det enkelte ordet «datamaskin» uten andre tegn tilknyttet før eller etter, bør du definere mønsteret som <computer>
.
Du kan også søke spesifikt etter mønstre som vises i begynnelsen eller slutten av linjen. Dette oppnås med ^
og $
karakterer henholdsvis.
Så hvis du bare ville finne oppføringene der ordet «datamaskin» dukket opp i begynnelsen av en linje, ville mønsteret ditt se ut som ^computer
. For det motsatte, når det er på slutten av linjen, ville mønsteret endres til computer$
.
Dette er RegEx enkle regler, som du også kan blande for å finne nøyaktig hvilke mønstre du søker. Du kan søke etter tegnområder i begynnelsen av en linje eller vekslende ord på slutten, bestemte datoer eller et årrekke ved å bruke en enkelt tekststreng.
Ikke glem å sjekke ut Regular Expressions cheatsheet for å mestre regulære uttrykk.
I slekt:
-
12 av de beste Linux-spillene i 2020
-
Hvordan endre navn på filer i Linux
-
Slik løser du feilen ‘Ingen plass igjen på enheten’ på Linux