Ebooks, Audobooks and Classical Music from Liber Liber
a b c d e f g h i j k l m n o p q r s t u v w x y z





Web - Amazon

We provide Linux to the World


We support WINRAR [What is this] - [Download .exe file(s) for Windows]

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Audiobooks by Valerio Di Stefano: Single Download - Complete Download [TAR] [WIM] [ZIP] [RAR] - Alphabetical Download  [TAR] [WIM] [ZIP] [RAR] - Download Instructions

Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
Regulære udtryk - Wikipedia

Regulære udtryk

Fra Wikipedia, den frie encyklopædi

Regulære udtryk (oversat fra engelsk, regular expressions, ofte forkortet til regexp eller regex) er et avanceret matchingsprog der bruges til at sammenligne tekststrenge med. Regulære udtryk bruges af mange teksteditorer til søgning og erstatning af dele af tekster. Mange programmeringssprog har understøttelse for regulære udtryk til manipulering af tekststrenge. Unix hjalp i stort omfang med at gøre regulære udtryk kendte igennem programmer som sed og grep.

Indholdsfortegnelse

[redigér] Basis

Et regulært udtryk, ofte kaldet et mønster, er et udtryk der beskriver hvordan en tekststreng er sat sammen. Dette kan være nyttigt både når man skal søge efter en tekststreng der kan variere, eller hvis man vil erstatte dele af en tekststreng med noget.

Regulære udtryk har en meget specifik syntaks hvor tegn er delt op i almindelige tegn, der betyder hvad der står, og metategn, der har specielle betydninger og er fundamentet for regulære udtryks nytte og samtidige kompleksitet.

[redigér] De almindelige tegn

De almindelige tegn er lettest. Det regulære udtryk, Hejsa er netop det:
en sekvens af fem tegn, hvor det første er et H, det næste er et e og så videre. Alle alfanumeriske tegn er almindelige tegn. Bogstaver uden for ASCII-tegnsættet, som æ, ø og å er desuden også, og det samme gælder for andre ikke-engelske bogstaver.

[redigér] Metategn

Metategn benyttes til at beskrive en serie af tegn, snarere end enkelte tegn. Uden metategn var vi kun i stand til at beskrive ordrette sætninger, men med metategn kan vi beskrive sætninger ud fra mere abstrakte kriterier. Lad os starte med de simpleste metategn:

Punktum ( . )
Et punktum betyder et enkelt af hvilket som helst tegn.
Asterisk ( * )
En asterisk betyder nul eller flere af det forgående tegn og forudsætter derfor at den følger efter noget gyldigt. .* betyder for eksempel nul eller flere af hvilket som helst tegn og a* betyder nul eller flere a'er.
Plus ( + )
Et plus virker næsten som asterisken, men betyder en eller flere af det forgående tegn. Forskellen her ligger i at et regulært udtryk som a* faktisk passer til tekststrengen bbbbbb siden der er nul eller flere a'er. a+ ville kræve mindst ét a.
Spørgsmålstegn ( ? )
Et spørgsmålstegn betyder nul eller ét af det forgående tegn.
Cirkumfleks ( ^ )
En cirkumfleks er et ankertegn der svarer til starten af en streng eller en linie. Den svarer ikke til noget tegn men den forankrer det efterfølgende tegn. kat vil svare til alle strenge hvor sekvensen kat indgår et eller andet sted. ^kat vil derimod kun passe hvis sekvensen kat er det første.
Dollartegn ( $ )
Et andet ankertegn der svarer til enden af en streng eller en linie.
Omvendt skråstreg ( \ )
En Omvendt skråstreg bruges til at udtrykke et metategns normale værdi, dvs. hvis man gerne vil udtrykke en rigtig asterisk, skal man bruge \*. tegn kan desuden være en oktalværdi eller en hexadecimalværdi, så man kan udtrykke alle tegn. Det gøres eksempelvis som \020 for mellemrum. Dette er praktisk for tegn som ikke normalt kan udskrives.
Kontroltegn der kan være svære at skrive og repræsentere, er også markeret med en omvendt skråstreg.
regex navn ASCII oktal
\a alert <BEL> \007
\b backspace <BS> \010
\e escape <ESC> \033
\f form feed <FF> \014
\n new line[1] <LF> \012
\r carriage return[2] <CR> \015
\t tab <HT> \011
\v vertical tab <VT> \013
Lodret streg ( | )
En lodret streg angiver et alternativ mellem 2 regulære udtryk på hver side af den. Det regulære udtryk Hans|Grethe svarer til Hans eller Grethe. Et typisk eksempel er når man skal tage højde for forskelle mellem Engelsk og Amerikansk stavemåde, f. eks grey|gray.
Gruppering med runde parenteser
Gruppering bruges ofte sammen med alternativer. Hvis man vil se dato, emne og afsender i en e-mail, kan man se dem i hoveddelen. En header er kendetegnet ved et navn der står først på en linie og er efterfulgt af et kolon (:). Det regulære udtryk bliver ^(Date|Subject|From):.

[redigér] Tegnklasser

[] markerer en tegnklasse. [aA] svarer til et tegn der er enten a eller A. [abcd] svarer til et af bogstaverne a, b, c eller d. Det er også muligt at angive et værdiområde. [0-9] svarer til alle tallene mellem 0 og 9 og [a-z] svarer til alle små bogstaver i ascii tegnsættet. Det er også muligt at kombinere flere værdiområder i samme tegnklasse, som f. eks [a-fA-F0-9] der svarer til et heksadecimaltal. Bindestregen er et metategn i tegnklassen, undtagen når den står først, [-a-z] svarer således til et lille bogstav eller en bindestreg.

Et andet metategn i tegnklasser er cirkumfleksen (^), men kun når den er det første tegn. Betydningen af den er negation af hele tegnklassen. [^abcd] svarer så til alle andre tegn end a, b, c og d.[3] Som et eksempel vil det regulære udtryk <[^>]*> svare til et tag i HTML og vil kunne bruges til at fjerne al markup fra HTML for at præsentere det som ren tekst.

I POSIX standarden er der defineret nogle specielle tegnklasser, der simplificerer håndteringen af sprogafhængige detaljer. Eksempelvis svarer [[:lower:]] til [a-z] med engelske indstillinger, mens det svarer til [a-zæøå] med danske indstillinger.

[:alnum:] bogstaver og tal
[:alpha:] bogstaver
[:blank:] mellemrum og tabulatortegn
[:cntrl:] kontroltegn
[:digit:] tal
[:graph:] grafiske tegn excl. mellemrum
[:lower:] små bogstaver
[:print:] grafiske tegn incl. mellemrum
[:punct:] tegn til grammatisk tegnsætning
[:space:] mellemrum, linieskift og lignende
[:upper:] store bogstaver
[:xdigit:] hexadecimaltal

Da ovennævnte klasser er uelegante at bruge, er der udviklet nogle stenografiske notationer af tilsvarende type.

\d tal
\D alt andet end tal
\w bogstaver og tegn der kan være del af et ord
\W tegn der ikke kan være del af et ord
\s whitespace tegn - mellemrum og linieskift mm.
\S grafiske tegn - ikke whitespace

[redigér] Historie

Matematikeren Stephen Cole Kleen indførte regulære set (regular sets) i algebra, og regulære udtryk som notationen for at udtrykke dem.

UNIX teksteditoren ed var et af de første computerprogrammer der udnyttede regulære udtryk. Snart fulgte programmet grep der er et specialiseret tekstsøgnings program.

I 1986 blev 2 typer regulære udtryk defineret i POSIX standarden.

  • Basic Regular Expressions er typen brugt i ed, den regnes generelt for forældet; men mange programmer understøtter den af hensyn til bagud kompatibilitet.
  • Extended Regular Expressions hvor metategnene plus (+) og spørgsmålstegn (?) indføres, og brugen af Omvendt skråstreg ikke er nødvendig ved parenteser.

Programmeringssproget perl har udviklet en avanceret version af regulære udtryk, og idag taler man ofte om Perl Compatible Regular Expressions - PCRE, som mere eller mindre er blevet implementeret i bl.a. .Net og Java (efter version 1.4).

[redigér] Praktisk anvendelse

Regex bliver ofte brugt i selv de mest simple programmer skrevet i Perl, men finder sin generelle anvendelse når der skal forekomme parsning/analyse af tekst (f.eks. i programmer som Emacs). Et eksempel kunne være at sikre sig at brugere ikke indtastede ulovlige (eller uønskede) værdier i en formular på internettet eller i et program - så problemer som f.eks. SQL-injektions kan nemt kan undgås (ved f.eks. kun tillade bogstaver og tal: [a-zæøåA-ZÆØÅ0-9]))

[redigér] Noter

  1. På en Mac vil \n ofte svare til carriage return.
  2. På en Mac vil \r ofte svare til line feed.
  3. Hvorvidt linjens afsluttende linjeskift bliver regnet med afhænger af implementationen.
Denne it-artikel er kun påbegyndt. Hvis du ved mere om emnet, kan du hjælpe Wikipedia ved at udvide den.
Our "Network":

Project Gutenberg
https://gutenberg.classicistranieri.com

Encyclopaedia Britannica 1911
https://encyclopaediabritannica.classicistranieri.com

Librivox Audiobooks
https://librivox.classicistranieri.com

Linux Distributions
https://old.classicistranieri.com

Magnatune (MP3 Music)
https://magnatune.classicistranieri.com

Static Wikipedia (June 2008)
https://wikipedia.classicistranieri.com

Static Wikipedia (March 2008)
https://wikipedia2007.classicistranieri.com/mar2008/

Static Wikipedia (2007)
https://wikipedia2007.classicistranieri.com

Static Wikipedia (2006)
https://wikipedia2006.classicistranieri.com

Liber Liber
https://liberliber.classicistranieri.com

ZIM Files for Kiwix
https://zim.classicistranieri.com


Other Websites:

Bach - Goldberg Variations
https://www.goldbergvariations.org

Lazarillo de Tormes
https://www.lazarillodetormes.org

Madame Bovary
https://www.madamebovary.org

Il Fu Mattia Pascal
https://www.mattiapascal.it

The Voice in the Desert
https://www.thevoiceinthedesert.org

Confessione d'un amore fascista
https://www.amorefascista.it

Malinverno
https://www.malinverno.org

Debito formativo
https://www.debitoformativo.it

Adina Spire
https://www.adinaspire.com