Innehållsförteckning
Detta appendix innehåller en kortfattad, men förhoppningsvis tillräcklig och heltäckande introduktion till de reguljära uttryckens värld. Det dokumenterar reguljära uttryck på den form som är tillgänglig i KatePart, som inte är likadana som reguljära uttryck i Perl, och inte heller i till exempel grep.
Reguljära uttryck ger oss en möjlighet att beskriva ett möjligt innehåll i en textsträng på ett sätt som enkelt kan förstås av programvara, så att den kan undersöka om texten matchar, och för mer avancerade tillämpningar, ge möjlighet att spara delar av texten som matchar.
Ett exempel: Säg att du vill leta i en text efter stycken som börjar med något av namnen ”Henrik” eller ”Pernilla”, följt av någon form av verbet ”säga”.
Med en normal sökning, skulle du börja med att leta efter det första namnet, ”Henrik”, kanske följt av ”s” på det här sättet: Henrik s, och medan du letar efter träffar måste du bortse från alla de som inte inleder ett stycke, samt de där ordet som börjar med ”s” inte var antingen ”säger”, ”sade” etc. Och därefter måste du förstås repetera allt för nästa namn ...
Med reguljära uttryck, kan den här uppgiften utföras med en enda sökning, och med högre noggrannhet.
För att åstadkomma detta, definierar reguljära uttryck detaljerade regler för att beskriva en generell sträng som ska matcha. Vårt exempel, som vi kan beskriva så här med ord: ”En rad som börjar antingen med ’Henrik’ eller ’Pernilla’ (möjligen efter upp till fyra mellanslag eller tabulatortecken), följt av ett mellanslag, följt av ’s’ och sedan antingen ’äger’ eller ’ade’”, skulle kunna uttryckas med följande reguljära uttryck:
^[ \t]{0,4}(Henrik|Pernilla) s(äger|ade)
Ovanstående exempel demonstrerar alla fyra huvudkoncepten i moderna reguljära uttryck, nämligen:
Mönster
Påståenden
Kvalificering
Bakåtreferenser
Hatten (^) som inleder uttrycket är ett påstående, som bara är sant om den följande strängen som matchar är först på raden.
Strängarna [ \t] och (Henrik|Pernilla) s(äger|ade) är mönster. Det första är en teckenklass som antingen matchar ett blanktecken eller ett (horisontellt) tabulatortecken. Det andra mönstret innehåller först ett delmönster som antingen matchar Henrik eller Pernilla, därefter en del som exakt matchar strängen s och slutligen ett delmönster som antingen matchar äger eller ade.
Strängen {0,4} är en kvalificering som säger ”allt från noll upp till fyra av det föregående”.
Eftersom programvara för reguljära uttryck stöder konceptet med bakåtreferenser, så sparas hela den matchande delen av strängen, samt delmönster som finns mellan parenteser. Givet något sätt att komma åt de här referenserna, skulle vi kunna få tag på hela matchningen (när man söker i ett textdokument i en editor med ett reguljärt uttryck, så visas den ofta markerad), eller namnet som hittades, eller den sista delen av verbet.
I sin helhet, så matchar uttrycket vad vi ville att det skulle göra, och bara det.
Följande avsnitt beskriver i detalj hur man skapar och använder mönster, teckenklasser, påståenden, kvalificering och bakåtreferenser. Det sista avsnittet ger några användbara exempel.