Har du nogensinde forsøgt at finde et tilbagevendende mønster i et stykke tekst? Du har muligvis brugt noget som søgefunktionen i din browser eller tekstbehandler, men når du har brug for at finde noget mere komplekst, kan det være som at finde en nål i den berømte høstak.

Heldigvis er der en måde at udvælge præcise mønstre i tekst lige ned til tegnet. Det hedder regulære udtryk, og det lader dig blive en mester for at søge gennem tekst.

Hvis du har overvejet nogen opmærksomhed på Linux-værktøjer, bemærker du sikkert, at de ofte bruger noget, der hedder regulære udtryk. Selvom Unix og Linux gjorde dem populære, findes regulære udtryk i en række forskellige pakker, herunder Microsoft Word.

Regelmæssige udtryk bruges mest i flere bemærkelsesværdige Linux-programmer, herunder grep (som står for Global Regular Expression Print), Awk og Sed.

Det er bedre at tænke på regulære udtryk som et lille sprog, hvis grundlæggende grunde kan beskrives i et lille rum.

Du kan søge ved hjælp af værktøjer som Grep eller Ack fra enten standardindgangen eller en tekstfil.

Hvis du for eksempel forsøgte at finde ordet "Firefox" i output fra ps-kommandoen, kan du gøre det her:

 ps | grep firefox 

Og her er hvordan du finder ordet "maketecheasier" i en fil.

 grep maketecheasier somefile 

metategn

I regulære udtryk kan du også søge efter dele af en streng. Den måde, du ville gøre dette på, er med to tegn. De kaldes faktisk metakarakter. De ligner de wildcard-kampe, du måske har brugt i skallen.

  • Msgstr "" "står for en enkelt karakter. Mønsteret "ct" passer både til ordene "cat", "cut" og "cot".
  • Metakarakteren "*" betyder at finde den forrige karakter 0 eller flere gange. Mønsteret "l. * X" ville finde "linux", såvel som andre ord, der skete for at passe til det samme mønster.

Grunden til at du bare ikke kan bruge noget som "l*x" som du ville i skallen, fordi matchende 0 eller flere tegn betyder, at det ville finde linjer, der ikke havde en "l" efterfulgt af et hvilket som helst andet tegn. Med andre ord, enhver linje, der forsøger at blive matchet, hvilket er absolut ubrugeligt.

Finde mønstre i begyndelsen eller i slutningen

Du kan også finde mønstre fra begyndelsen eller slutningen af ​​linjer.

  • Karakteren "^" matcher i begyndelsen
  • "$" Matchede i slutningen.

For eksempel ville "sier$" svare til "Make Tech Easier" og "^Make" ville matche "Make."

Finde kamp i en rækkevidde

Du kan også komme ind i mere komplicerede tegn. Alt, hvad du sætter i firkantede parenteser, matches som en rækkevidde. For eksempel matcher " [az] " alle små bogstaver. " [a-zA-Z] " matcher alle bogstaverne. " [a-zA-Z0-9] " matcher alfanumeriske tegn. Indenfor parenteserne negerer karakteren "^" noget. " [^a-zA-Z] " matcher alt, hvad der ikke er et bogstav.

Du kan også finde ordgrænser med " \< " og " \> " tegnene. Mønsteret " \ " matcher "Linux", selvfølgelig.

Du kan matche noget et bestemt antal gange med krøllede parenteser. " {3} " matcher noget tre gange, og " {3, 5} " matcher noget mellem 3 og 5 gange.

Med disse enkle byggesten kan du matche nogle ret komplicerede ting. Der er meget mere til regulære udtryk end det, der kan forklares i en kort artikel. Hvis du ønsker en omfattende boglængdesbehandling af emnet, skal du helt sikkert tjekke Mastering Regular Expressions af Jeffrey EF Friedl.

Disclosure: Denne artikel indeholder et affilieret link. Mens vi kun skriver om produkter, som vi mener fortjener at være på dette websted, kan Make Tech Easier tjene en lille provision, hvis du klikker og køber det pågældende produkt.

Billedkredit: xkcd