Reguljära uttryck

Från Rilpedia

(Omdirigerad från Regular expressions)
Hoppa till: navigering, sök
Ril_red.png
Rilpedia artikel
rpsv.header.diskuteraikon2.gif

Ett reguljärt uttryck (eller "ett regex"/"en regexp") är ett sätt för mönsterpassning som används i flera programspråk och datorkommandon. Det handlar alltså inte om vilka "vanliga" uttryck som helst.

Regexps används när man i en viss textmassa vill hitta ett visst ord eller mönster av tecken och eventuellt byta ut det. Ett vanligt användningsområde och åskådligt exempel är kommandot grep(1) i Unix, som letar efter ett mönster i en fil.

Mer avancerade och fullständiga exempel är den primitiva texteditorn ed och strömeditorn sed. En alternativ variant av regexpar ingår i programspråket Perl. Olika varianter av regexpar är tillgängliga från Pike, Java, Elisp, Python och som subrutinbibliotek i övriga programspråk. Det finns tre typer av regex-motorer: DFA, Traditional NFA och POSIX NFA. Dessa hittar inte alltid samma träffar, och gör det dessutom olika snabbt. För en jämförelse mellan olika implementationer, se http://www.bagley.org/~doug/shootout/bench/regexmatch/

Vanligt förekommande funktioner

 foo		ordet foo
 .		vilket tecken som helst
 a*		noll eller flera av bokstaven a
 .*		noll eller flera av vilket tecken som helst
 a+		ett eller flera av bokstaven a
 a?		noll eller ett av bokstaven a
 (foo)+        en eller flera förekomster av strängen "foo"
 foo|bar       strängen "foo" eller "bar"
 [ ab ]	bokstaven a eller bokstaven b
 [ a-e ]	någon av bokstäverna a, b, c, d eller e
 [ ^a ]	något tecken som inte är bokstaven a
 [ -a ]	något av tecknet minus eller bokstaven a
 ^a		bokstaven a först på en rad
 a$		bokstaven a sist på en rad
 \[		tecknet vänsterklammer

Alla dessa funktioner ingår inte i alla implementationer, och i vissa fall ska t ex + och ( föregås av \.

Specialare

För en del tecken krävs specialhantering. För att passa in ett ] (höger hakparantes), måste detta skrivas först i uttrycket som listar en mängd tecken, eftersom tecknet annars skulle markera slutet på mängden. [ ]a-z ] passar in på någon av de gemenena bokstäverna a till och med z plus på höger hakparantes.

Knepigt är det att passa in ett minustecken (-), ofta går det att skriva tecknet sist i mängden, [ ]a-z- ], men ibland fungerar det bättre att skriva tre minustecken i rad, [ ]a-z--- ], dvs från och med minus till och med minus.

Mer läsning


Mall:RpImportedFrom

Personliga verktyg