Whitespace (karakter)
Een whitespace is een verzamelnaam voor alle horizontale en verticale spaties die bij weergave een lege ruimte tonen tussen de zichtbare tekens of woorden (horizontaal) of regels (verticaal).
Lege karakters
[bewerken | brontekst bewerken]Een andere benaming voor deze groep karakters is blank characters ('lege karakters') in een karakterset, die kunnen voorkomen in een (digitaal) tekstbestand, of in tekstdelen van computerbestanden (bijvoorbeeld in metadata). Van deze karakters zijn de 'spatie', 'tab', 'line feed' (ook wel 'new line' genoemd) en 'carriage return' het meest bekend en gebruikt. Met name bij de 'spatie' en de 'tab' is het evident dat op de plaats van het karakter een lege ruimte in de tekstregel te zien is. Naast de vier eerder genoemde blank characters, vallen ook 'line tabulation', 'form feed', 'next line' en 'no break space' uit de ASCII-tabel onder de noemer whitespace.
Anders dan de afzonderlijke karakters die de verzameling van de blank characters vormen, is er logischerwijs geen ASCII-code voor de 'whitespace'; het is immers geen discreet karakter in de karakterset. Er is wel een karaktercombinatie die de whitespace representeert in 'regular expressions'.
Representatie van blank characters
[bewerken | brontekst bewerken]Karakter | Aanduiding | ASCII-code (decimaal) |
ASCII-code (hexadecimaal) |
ASCII-code (octaal) |
HTML-code | Reguliere expressie |
CTRL +letter[ref 1] |
---|---|---|---|---|---|---|---|
tab[1] | HT | 009 | 0x09 | 011 | 	 of 	 | \t |
^I
|
line feed[2] | LF, EOL[3] | 010 | 0x0a | 012 | of 
 | \n |
^J
|
line tabulation[4] | VT | 011 | 0x0b | 013 |  | \v |
^K
|
form feed[5] | FF | 012 | 0x0c | 014 |  | \f |
^L
|
carriage return | CR | 013 | 0x0d | 015 | | \r |
^M
|
spatie | SP | 032 | 0x20 | 040 |   | of [ ] |
|
next line | NEL | 133 | 0x85 | 205 | … | \x85 [6] |
|
harde spatie | NBSP | 160 | 0xa0 | 240 |   of | \xa0 [6] |
|
white space | WS | n.v.t.[7] | n.v.t.[7] | n.v.t.[7] | n.v.t.[7] | \s |
In de reguliere expressie-kolom zijn slechts voorbeelden getoond, er zijn diverse andere mogelijkheden om de betreffende karakters in een regular expression te beschrijven of te matchen. Daarnaast dient nog opgemerkt te worden, dat afhankelijk van waar en hoe de reguliere expressies gebruikt worden, ze soms omgeven dienen te worden door de regexp-delimiter (scheidingsteken), de forward slash (/
). Bij gebruik in shells of shell scripts, wanneer een regular expression als parameter/argument wordt meegegeven, kan het noodzakelijk zijn om deze bijvoorbeeld in te sluiten in single quotes ('
), al dan niet zelf weer escaped (voorafgegaan door een backslash) om te voorkomen dat speciale karakter(combinatie)s door de shell worden geëvalueerd in plaats van door het aangeroepen commando of programma.[ref 2][ref 3]
Andere karaktersets
[bewerken | brontekst bewerken]Naast de ASCII-karakterset, bestaan er ook andere en grotere karaktersets, zoals Unicode. Hierin bevinden zich behalve de hierboven genoemde blank characters, nog meer karakters die tot de whitespaces gerekend worden. Voor het gebruik van reguliere expressies met bijvoorbeeld de Unicode-karakterset, zal het programma of de software waarin deze gebruikt worden, wel Unicode moeten ondersteunen. In dat geval zal de regexp \s
ook matchen met alle tekens die tot de whitespaces worden gerekend, maar zal (mogelijk) geen eenletterige \
-sequence bestaan die individueel matchen met de whitespace-karakters die niet in de klassieke ASCII-tabel voorkomen. In plaats daarvan kan op Unicode-karakter worden gematched met de expressie \uFFFF
of \u{FFFF}
, waarin FFFF
dan correspondeert met de hexadecimale waarde van het betreffende karakter.[ref 3]
Referenties
- ↑ (en) ASCII Character Set and Hex Values www.cisco.com, geraadpleegd 3 september 2016.
- ↑ (en) Bash Guide for Beginners - 4.2.2. Grep and regular expressions tldp.org, geraadpleegd 2 september 2016.
- ↑ a b (en) Regular Expressions Quick Start www.regular-expressions.info, geraadpleegd 2 september 2016.
Noten
- ↑ Ook wel voluit 'horizontal tab' genoemd.
- ↑ Ook wel 'new line', 'end of line' of 'line break' genoemd.
- ↑ In sommige (platform)contexten wordt met
<EOL>
('end of line') de combinatie<LF> + <CR>
bedoeld of geïmpliceerd. Programmeurs en sommige programmeertaalfuncties negeren daarom soms de<CR>
in direct aangrenzende combinatie met de<LF>
of geven hiertoe gelegenheid middels flags of omgevingsvariabelen. - ↑ Ook wel 'vertical tab' genoemd.
- ↑ Ook wel 'page break' genoemd.
- ↑ a b Voor dit specifieke blank character is geen "shorthand
\
character match" expressie beschikbaar, zodat voor in dit voorbeeld van de regular expression gematched wordt op de hexadecimale ASCII-code van het karakter door middel van een\xFF
sequence. - ↑ a b c d Voor de whitespace geldt dus, omdat het een verzamelterm is, een een-op-veel relatie (naar discrete karakters). Er is dus omgekeerd geen uniek karakter in karaktersets dat "de whitespace" voorstelt of toont. Een voorbeeld naar analogie: in een karakterset kunnen alle tekens (en codes) worden benoemd die een "klinker" zijn, maar het is evident dat andersom geen unieke karakter(code) voor "de klinker" bestaat (om deze te tonen).