Wikipedia:AutoWikiBrowser/Reguljära uttryck
Detta är en beskrivning av hur man skriver reguljära uttryck för användning tillsammans med AWB. Reguljära uttryck som används i andra sammanhang kan skilja sig lite mot vad som beskrivs här.
Delar av det som beskrivs här är både avancerat och ovanligt. De flesta reguljära uttryck som används i rättstavninglistan för AWB använder endast de mer grundläggandde funktioner som beskrivs här.
Find-uttrycket
[redigera | redigera wikitext]\w: Ett tecken bestående av en bokstav (även å, ä och ö), siffra eller ett understreck, dock ej t.ex. bindestreck, punkt, komma eller mellanslag.
\W: Motsatsen till \w.
\b: Står för word boundary. Markerar gränsen mellan \W och \w, eller \w och \W. (\b motsvarar alltså inte ett tecken, utan en gräns med längden noll mellan två tecken.)
\B: Motsatsen till \b, d.v.s. en gräns mellan två tecken som inte är mellan \W och \w, eller \w och \W. (Ovanlig.)
\d: En siffra 0-9. Kan användas i stället för att skriva "[0-9]".
\D: Motsatsen till \d, d.v.s. vilket tecken som helst utom en siffra. Kan användas i stället för att skriva "[^0-9]".
\s: Blanktecken (whitespace) såsom mellanslag, tabbtecken, radbrytning m.m.
\S: Motsatsen till \s, d.v.s. vilket tecken som helst utom ett blanktecken.
.: En punkt ger träff för vilket tecken som helst. Vill man matcha en punkt kan man skriva "[.]" eller "\.".
[]: Ger träff för något av tecknen som anges inom hakparenteserna, t.ex. "[a-zåäö0-9]". (För träff på alla bokstäver i det svenska alfabetet kan man inte skriva "[a-ö]", utan måste skriva "[a-zåäö]".)
[^]: Ger träff för alla tecken förutom de som anges efter ^-tecknet inom hakparenteserna.
(): Sparar träffen inom parentesen till $1, $2, $3 osv. som sedan kan användas i Replace-uttrycket. Varje parentes sparas i en egen sträng som numreras 1, 2, 3 osv.
(?:): Om man inte tänker använda innehållet i en parentes i Replace-uttrycket, så kan man inleda parentesen med "?:". Innehållet sparas då inte och det går lite fortare.
(|): Ger möjlighet att ange flera alternativa träffar inom en given parentes. Endast den text som träffas sparas i strängen.
(()): Parenteser kan anges inuti andra parenteser. Då sparas den yttre parentesen först. Parenteser sparas i den ordning vänsterparenteser påträffas.
(?!regex): Används i ett uttrycks inledning för att ange skenträffar. "(?!skenträff)träff" ger match för "träff" om det inte samtidigt ger match för "skenträff".
(?!regex): Negative lookahead. "Som inte åtföljs av". "regex(?!x)" ger match för "regex" endast om "regex" inte åtföljs av "x".
(?<!regex): Negative lookbehind. "Som inte föregås av". "(?<!x)regex" ger match för "regex" endast om "regex" inte föregås av "x".
(?=regex): Positive lookahead. "Som åtföljs av". "regex(?=x)" ger match för "regex" endast om "regex" åtföljs av "x". Bra om man inte vill att "x" ska ingå i sammanfattningen.
(?<=regex): Positive lookbehind. "Som föregås av". "(?<=x)regex" ger match för "regex" endast om "regex" föregås av "x". Bra om man inte vill att "x" ska ingå i sammanfattningen.
?: Träffar 0 eller 1 upprepningar av det föregående tecknet eller den föregående parentesen.
+: Träffar 1 eller fler upprepningar av det föregående tecknet eller den föregående parentesen.
*: Träffar 0 eller fler upprepningar av det föregående tecknet eller den föregående parentesen.
{m}: Träffar exakt m upprepningar.
{m,}: Träffar m eller fler upprepningar.
{m,n}: Träffar minst m och som mest n upprepningar.
\1, \2, \3 o.s.v: Har samma funktion i Find-uttrycket som $1, $2, $3 o.s.v. har i Replace-uttrycket, d.v.s. innebär innehållet i uttryckets parenteser. \1 o.s.v. har dock följande två begränsningar som inte $1 o.s.v. har. Man kan inte använda \3 till vänster om den tredje parentesen (finns ytterst sällsynta undantag). Den parentes som refereras till med t.ex. \1 får inte följas av ?, *, {0,} eller {0,n}, d.v.s. något som kan innebära noll förekomster. Om parentesen gör det, gör ytterligare en parentes kring den parentesen och referera till den yttre av parenteserna. Exempel på användning: Se Find-uttrycket för "datum4".
(\1)0: Innebär \1 (d.v.s. innehållet i den första parentesen) följt av en nolla, till skillnad mot \10 som innebär innehållet i den tionde parentesen.
\<gruppnamn>: Som \1, \2, \3 o.s.v., men med gruppnamn.
??, +?, *?, {m,}? och {m,n}?: Fungerar som ?, +, *, {m,} och {m,n}, men ger träff på så få tecken som möjligt i stället för så många som möjligt. (Ovanliga.)
(?<gruppnamn>regex): Namngiven grupp. Gruppnamnet kan användas i stället för gruppnr/parentesnr i t.ex. villkorliga uttryck och även i Replace-uttrycket. (Ovanlig.) Exempel på användning: Se Find-uttrycket för "-tv".
(?(gruppnr)regex1|regex2): "If, then, else". Villkorliga uttryck. Om det blivit träff på gruppen/parentesen med nummer gruppnr, så används uttrycket regex1, annars regex2. (Ovanlig.) Exempel på användning: Se Find-uttrycket för "än".
(?(gruppnr)regex): "If, then". Som ovan, men utan "else"-del. (Ovanlig.)
(?(gruppnamn)regex1|regex2): "If, then, else". Villkorliga uttryck. Med gruppnamn i stället för gruppnr. (Ovanlig.)
(?(gruppnamn)regex): "If, then". Som ovan, men utan "else"-del. (Ovanlig.) Exempel på användning: Se Find-uttrycket för "-tv".
(?>regex): Atomic group. Kan användas till att öka hastigheten för komplicerade uttryck. Fungerar som en vanlig parentes med följande undantag: Om det blir träff på något av alternativen inom parentesen, men det inte blir träff på uttrycket i sin helhet, så undersöks inga ytterligare alternativ inom parentesen. Ordningsföljden på alternativen (som saknar betydelse i vanliga parenteser) är därför viktig. De utvärderas från vänster till höger. Man kan t.ex. inte skriva "(?>tre|tretton)". Då blir det aldrig träff på "tretton". Men detta fungerar: "(?>tretton|tre)". I likhet med alla andra parenteser som inleds med "?", så sparas inte innehållet till Replace-uttrycket. Vill man spara det får man göra en yttre parentes kring den aktuella parentesen. Exempel på användning: Se t.ex. Find-uttrycken för "a" och "minister".
(?i): Gör matchningen "case insensitive", d.v.s. det görs ingen skillnad på gemener och versaler. Gäller till slutet av uttrycket eller tills "(?-i)" påträffas. Om det finns en yttre parentes kring "(?i)", så gäller inställningen till slutet på den parentesen.
(?-i): Återställer matchningen till att vara "case sensitive" (det normala), d.v.s. det görs skillnad på gemener och versaler.
(?i:regex): Gör matchningen "case insensitive" inom parentesen, d.v.s. det görs ingen skillnad på gemener och versaler.
(?-i:regex): Gör matchningen "case sensitive" (det normala) inom parentesen, d.v.s. det görs skillnad på gemener och versaler.
\p{L}: En bokstav, gemen eller versal, från vilket alfabete som helst, inte bara det svenska.
\p{Ll}: Ett tecken bestående av en gemen från vilket alfabete som helst, inte bara det svenska.
\P{Ll}: Motsatsen till \p{Ll}, d.v.s. inte en gemen.
\p{Lu}: Ett tecken bestående av en versal från vilket alfabete som helst, inte bara det svenska.
\P{Lu}: Motsatsen till \p{Lu}, d.v.s. inte en versal.
\t, \r, \n: Motsvarar dessa tecken: Tabb, vagnretur ("carriage return"), ny rad ("line feed").
\x00: Ett tecken med viss kod. \x ska följas av två hexadecimala siffror. Exempel: "\x41" innebär tecknet "A". "\x22" innebär ett citationstecken. Man kan inte ange ett citationstecken i ett uttryck, eftersom hela uttrycket omges av citationstecken, men man kan alltså skriva \x22 i stället. Exempel på användning: Se Find-uttrycket för "romerska tal 1".
\u0000: Ett tecken med viss Unicode-kod. \u ska följas av fyra hexadecimala siffror. Exempel: "\u0041" innebär tecknet "A".
\cA: Ett tecken med viss kod. \c ska följas av något av de 26 tecknen A - Z och innebär ASCII-kod 1-26. Exempel: "\cI" innebär ett tabbtecken (precis som "\t").
(#Valfri text): En kommentar.
Replace-uttrycket
[redigera | redigera wikitext]$1, $2, $3 o.s.v: $3 innebär innehållet i den parentes i Find-uttrycket som inleds med den tredje vänsterparentesen där parenteser som inleds med "?" inte räknas.
${gruppnamn}: Innebär innehållet i den namngivna gruppen/parentesen.
${1}0: Innebär $1 (d.v.s. innehållet i den första parentesen) följt av en nolla, till skillnad mot $10 som innebär innehållet i den tionde parentesen.
$$10: Innebär texten $10, d.v.s. ett dollartecken följt av talet 10.
$0: Innebär hela den text det blivit träff på.
Vanliga tillämpningar
[redigera | redigera wikitext]Inledande \b: För att inte ge träff för förekomst mitt i ett ord.
Avslutande \b: För att inte ge träff för ord med diverse efterled.
Avslutande (\w*): Tillåter, men kräver inte ett efterled till den föregående delen av det reguljära uttrycket. Påverkar inte vad det blir träff på. Påverkar endast redigeringskommentaren, som inkluderar ordets efterled. Dock påverkas naturligtvis uttrycket av avsaknaden av ett avslutande "\b". Man brukar ju normalt inte ha något avslutande "\b" då "(\w*)" används.
Avslutande (\w+): Kräver ett efterled eller ändelse till den föregående delen av det reguljära uttrycket.
Avslutande (s)?\b: Vanligt för egennamn. Tillåter egennamnet med eller utan genitiv-s. Dock inga sammansättningar med egennamnet som förled.
Inledande \b[Ff]: Vanligt för egennamn: Träffar både gemen och versal initial. Behöver inte anges inom parentes eftersom egennamn alltid inleds med versal.