Reguljära uttryck

Från Wikipedia
Hoppa till navigering Hoppa till sök

Inom datavetenskap är reguljära uttryck (engelska: regular expressions, ofta förkortat regex eller regexp) en notation för att beskriva vissa mängder av strängar. Ett uttryck består av en sträng som följer särskilda syntaxregler. Reguljära uttryck används i många texteditorer och programspråk för sökning och textmanipulation.

Syntax[redigera | redigera wikitext]

Den exakta syntaxen för reguljära uttryck kan variera. Men det finns några grundläggande begrepp som är gemensamma för många tillämpningar.

I sin enklaste form är ett reguljärt uttryck ett enskilt tecken som matchar en delsträng som utgör själva tecknet. Exempelvis, det reguljära uttrycket "a" matchar tecknet "a" i ordet "katt". Med hjälp av operatorer kan man bygga ihop uttryck som matchar komplicerade mönster i strängar.

De grundläggande operationerna är:

  • Konkatenering beskrivs av en sekvens av deluttryck, exempelvis matchar sekvensen "hur" bokstaven "h" omedelbart följt av "u" omedelbart följt av "r", dvs strängen "hur".
  • Alternativ beskrivs av ett lodrätt streck, |. Det används för att matcha ett av flera alternativ. Uttrycket "hund|katt" matchar både strängen "hund" och strängen "katt".
  • Upprepning används för att matcha ett uttryck som upprepas 0 eller flera gånger. Det markeras med en asterisk. Uttrycket "go*gle" matchar en oändlig mängd av strängar: "ggle", "gogle", "google", "gooogle", o.s.v.
  • Gruppering av uttryck kan göras med parenteser. Det används t.ex. för att ange alternativ, såsom "G(äv|ef)le" som matchar "Gävle" och "Gefle".

Dessutom förekommer i de flesta implementationer även:

  • Teckenklasser matchar ett av de tecken som beskrivs inom hakparenteserna. Till exempel matchar [btk]ok bok, tok och kok. Man kan även beskriva klassen med ett intervall, till exempel [a-z] eller [a-z1-9@.].
  • Jokertecken som anges med tecknet ".". Matchar vilket tecken som helst.
  • Fler varianter av upprepning. Till exempel "?" för att ange antingen 0 eller 1 upprepning och "+" används för att ange 1 eller flera upprepningar.

Exempel[redigera | redigera wikitext]

Anta att vi vill hitta ett datum som är inbäddad i en text:

Anita skulle besöka Alfred klockan 19:20 2012-12-21 för att äta middag.

Vi kan då matcha datumet med uttrycket:

[0-9]+-[0-9]+-[0-9]+

Notera att detta även matchar exempelvis 0-0-0 eller 1234-493456-8645 som inte är korrekta datum. För att matcha ett korrekt datum kan man göra exempelvis:

[0-9]+-(0[1-9]|1[012])-(0[1-9]|[12]\d|3[01])

Reguljära uttryck i skriptspråk[redigera | redigera wikitext]

Skriptspråken Perl, Ecmascript och Tcl har reguljära uttryck semantiskt inbyggda i själva språket, medan de allra flesta programspråk, verktyg och miljöer har någon form av stöd för användandet av reguljära uttryck implementerat.

Externa länkar[redigera | redigera wikitext]