Metakaraktär
En metatecken är en karaktär som har en speciell betydelse för ett datorprogram, till exempel en skaltolk eller en motor för reguljära uttryck (regex).
I POSIX utökade reguljära uttryck finns det 14 metatecken som måste escapes (föregås av ett snedstreck ( \
)) för att ta bort sin speciella betydelse och behandlas bokstavligt i ett uttryck: öppnande och stängande hakparenteser ( [
och ]
); omvänt snedstreck ( \
); caret ( ^
); dollartecken ( $
); punkt/punkt/punkt ( .
); vertikal streck/rörsymbol ( |
); frågetecken ( ?
); asterisk ( *
); plus- och minustecken ( +
och -
); öppna och stänga krulliga parenteser/stag ( {
och }
); och öppnande och stängda parenteser ( (
och )
).
Till exempel, för att matcha det aritmetiska uttrycket (1+1)*3=6
med ett regex, är det korrekta regexet \(1\+1\)\*3=6
; annars kommer parenteserna, plustecknet och asterisken att ha speciella betydelser.
Andra exempel
Vissa andra karaktärer kan ha speciell betydelse i vissa miljöer.
- I vissa Unix-skal är semikolon ( ";") en satsseparator .
- I XML och HTML introducerar et-tecken ("&") en HTML - entitet . Det har också speciell betydelse i MS-DOS / Windows Kommandotolk .
- I vissa Unix-skal och MS-DOS/Windows-kommandotolken används mindre-än-tecknet och större-än-tecknet ("<" och ">") för omdirigering och backtick /grave-accenten ("`") används för kommandosubstitution .
- I många programmeringsspråk är strängar avgränsade med hjälp av citattecken ( " eller '). I vissa fall används escape-tecken (och andra metoder) för att undvika avgränsningskollision , t.ex. "Han sa, \"Hej\"".
- I printf-formatsträngar används procenttecknet ("%") för att introducera formatspecifikationer och måste escapes som "%%" för att tolkas bokstavligt . I SQL används procenten som ett jokertecken .
- I SQL används understrecket ("_") för att matcha ett enskilt tecken.
Flyr
Termen "att undkomma en metakaraktär" betyder att göra metakaraktären ineffektiv (att ta bort den från dess speciella betydelse), vilket gör att den får sin bokstavliga betydelse. Till exempel, i PCRE står en punkt (".") för varje enskilt tecken. Det reguljära uttrycket "AC" kommer att matcha "ABC", "A3C" eller till och med "AC". Men om "." är escaped kommer den att förlora sin betydelse som en metatecken och tolkas bokstavligen som ".", vilket gör att det reguljära uttrycket "A\.C" bara matchar strängen "AC".
Det vanliga sättet att undkomma ett tecken i ett regex och på andra ställen är genom att prefixa det med ett snedstreck ("\"). Andra miljöer kan använda olika metoder, som MS-DOS/Windows Command Prompt, där en indikator ("^") används istället.