Reguljära uttryck

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

Inom datavetenskap är reguljära uttryck (på 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 ä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 minst ett av två 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:

(19|20)\d\d[- /.](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]