Reguliere tekenklassen
Tekenklasseconstructies
Met een tekenklasse kunt u een set tekens opgeven, tussen vierkante haken, waarmee één enkele tekenmatch kan worden gegenereerd. Een tekenklasse matcht met slechts één teken. Bijvoorbeeld
gr[ae]y
matcht met gray
of grey
, maar niet naar graay
of graey
. De volgorde van de tekens tussen de haakjes maakt niet uit.U kunt een koppelstreepje binnen een tekenklasse gebruiken om een tekenbereik op te geven. Voorbeeld:
[a-z]
matcht met één kleine letter tussen a
and z
. U kunt ook meer dan één bereik gebruiken, of een combinatie van bereikwaarden en enkele tekens. Voorbeeld: [0-9X]
matcht met een cijfer of letter X
. De volgorde van de tekens en het bereik is niet van belang.Een dakje na een haakje openen geeft tekens aan die van een match moeten worden uitgesloten. Bijvoorbeeld
[^abc]
komt overeen met elk teken behalve a
, b
, of c
.Construct | Type | Omschrijving |
|---|---|---|
[
abc ] | Eenvoudig | Matches a of b of c
|
[^abc]
| Negatie: | Komt overeen met elk teken behalve a of b of c
|
[a-zA-Z]
| Bereik | Matches a t/m z , of A t/m Z (inclusief) |
[a-d[m-p]]
| Vakbond | Matches a t/m d , of m t/m p
|
[a-z&&[def]]
| Intersectie | Matches d , e , of f
|
[a-z&&[^xq]]
| Aftrekken | Matches a t/m z , behalve x and q
|
Vooraf gedefinieerde tekenklassen
Vooraf gedefinieerde tekenklassen zijn handige afkortingen voor veelgebruikte reguliere expressies.
Construct | Omschrijving | Voorbeeld |
|---|---|---|
.
| Komt overeen met elk afzonderlijk teken (behalve newline) | .at matcht met 'cat', 'hat' en ook 'bat' in de woordgroep 'batchbestanden' |
\d
| Komt overeen met een willekeurig cijfer (equivalent aan [0-9] ) | \d matcht met 3 in C3PO en 2 in file_2.txt |
\D
| Komt overeen met alle tekens zonder cijfers (equivalent aan [^0-9] ) | \D komt overeen met 'S' in '900S' en 'Q' in 'Q45' |
\s
| Komt overeen met één witruimteteken (equivalent aan [ \t\n\x0B\f\r] ) | \sbook komt overeen met 'book' in 'blauw boek', maar niets in 'notebook' |
\S
| Komt overeen met elk afzonderlijk teken zonder witruimte | \Sbook komt overeen met 'book' in 'notebook', maar niets in 'blauw boek' |
\w
| Komt overeen met alle alfanumerieke tekens, inclusief onderstrepingstekens (equivalent aan [A-Za-z0-9_] ) | r\w* komt overeen met 'rm' en 'root' |
\W
| Komt overeen met alle niet-alfanumerieke tekens (equivalent aan [^A-Za-z0-9_] ) | \W matcht met '&' in 'stmd &', '%' in '100%' en '$' in '$HOME' |
POSIX-tekenklassen (US-ASCII)
POSIX heeft een set tekenklassen die bepaalde gemeenschappelijke bereikwaarden aangeven. Ze zijn vergelijkbaar met klassen van haakjes en vooraf gedefinieerde tekenklassen, behalve dat ze rekening houden met de landinstelling (de lokale taal/het lokale coderingssysteem).
Construct | Omschrijving |
|---|---|
\p{Lower}
| een kleine letter, [a-z]
|
\p{Upper}
| een hoofdletter, [A-Z]
|
\p{ASCII}
| Een ASCII-teken, [\x00-\x7F]
|
\p{Alpha}
| Een alfabetisch teken, [a-zA-z]
|
\p{Digit}
| Een cijfer, [0-9]
|
\p{Alnum}
| een alfanumeriek teken, [a-zA-z0-9]
|
\p{Punct}
| Een leesteken, een van !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
|
\p{Graph}
| Een zichtbaar teken, [\p{Alnum}\p{Punct}]
|
\p{Print}
| Een afdrukbaar teken, [\p{Graph}\x20]
|
\p{Blank}
| Een spatie of tabblad, [ t]
|
\p{Cntrl}
| Een controleteken, [\x00-\x1F\x7F]
|
\p{XDigit}
| Een hexadecimaal cijfer, [0-9a-fA-F]
|
\p{Space}
| Een witruimteteken, [ \t\n\x0B\f\r]
|