Regulært udtryk: Forskelle mellem versioner

Content deleted Content added
JAnDbot (diskussion | bidrag)
m Ensretter kildehenvisninger; kosmetiske ændringer
Linje 1:
'''Regulære udtryk''' (oversat fra engelsk, ''regular expressions'', ofte forkortet til '''regexp''' eller '''regex''') er et avanceret matchingsprog der bruges til at sammenligne tekststrenge. Regulære udtryk bruges af mange [[teksteditor]]er 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]].
 
== 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.
 
=== De almindelige tegn ===
De almindelige tegn er lettest. Det regulære udtryk, <code>Hejsa</code> er netop det:<br />
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.
 
=== 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]] ( . )
Linje 24:
;[[Cirkumfleks]] ( ^ )
:En cirkumfleks er et ankertegn der svarer til starten af en streng eller en linje. Den svarer ikke til noget tegn men den forankrer det efterfølgende tegn. <code>kat</code> vil svare til alle strenge hvor sekvensen ''kat'' indgår et eller andet sted. <code>^kat</code> vil derimod kun passe hvis sekvensen ''kat'' er det første.
;[[Dollartegn]] ( $ )
:Et andet ankertegn der svarer til enden af en streng eller en linje.
; [[Omvendt skråstreg]] ( \ )
Linje 30:
 
:Kontroltegn der kan være svære at skrive og repræsentere, er også markeret med en omvendt skråstreg.
:{| border="1" cellpadding="2" width="300" cellpadding="2" cellspacing="0"
! regex
! navn
Linje 58:
: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 linje og er efterfulgt af et [[kolon]] (:). Det regulære udtryk bliver <code>^(Date|Subject|From):</code>.
 
=== Tegnklasser ===
[] markerer en tegnklasse. <code>[aA]</code> svarer til et tegn der er enten ''a'' eller ''A''. <code>[abcd]</code> svarer til et af bogstaverne ''a'', ''b'', ''c'' eller ''d''. Det er også muligt at angive et værdiområde. <code>[0-9]</code> svarer til alle tallene mellem ''0'' og ''9'' og
<code>[a-z]</code> svarer til alle små bogstaver i ascii tegnsættet. Det er også muligt at kombinere flere værdiområder i samme tegnklasse,
Linje 110:
|}
 
== Historie ==
[[Matematiker]]en [[Stephen Cole Kleene]] indførte ''regulære set (regular sets)'' i [[algebra]], og regulære udtryk som notationen for at udtrykke dem.
 
Linje 122:
Programmeringssproget [[perl]] har udviklet en avanceret version af regulære udtryk, og i dag taler man ofte om ''Perl Compatible Regular Expressions'' - PCRE, som mere eller mindre er blevet implementeret i bl.a. [[.Net]] og [[Java (programmeringssprog)|Java]] (efter version 1.4).
 
== 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 [[GNU Emacs|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]))
 
== Noter ==
{{reflist}}
<references />
{{it-stub}}
 
[[Kategori:Datalogi]]
 
{{it-stub}}
 
[[ar:تعبير قياسي]]