Hoofdstuk 16. Reguliere uitdrukkingen
Terug |  | Volgende

# Hoofdstuk 16. Reguliere uitdrukkingen

De reguliere uitdrukkingen (of afgekort regex) die worden gebruikt in zoekacties en segmentatieregels zijn die welke worden ondersteund door Java. Als u meer specifieke informatie nodig heeft raadpleeg dan documentatie voor Java Regex. Bekijk de aanvullende verwijzingen en voorbeelden hieronder.

### Opmerking

Dit hoofdstuk is bedoeld voor gevorderde gebruikers, die hun eigen varianten van segmentatieregels moeten kunnen definiëren of meer complexe en krachtigere zoeksleutels moeten kunnen opdelen.

Tabel 16.1. Regex - Vlaggen

De constructie... | ...komt overeen met het volgende
--- | ---
(?i) | Schakelt overeenkomen van hoofd-/kleine letters in (standaard is het patroon hoofdletter-gevoelig).

Tabel 16.2. Regex - Teken

De constructie... | ...komt overeen met het volgende
--- | ---
x | Het teken x, met uitzondering van het volgende...
\uhhhh | Het teken met de hexadecimale waarde 0xhhhh
\t | Het Tab-teken ('\u0009')
\n | Het teken voor een nieuwe regel (line feed) ('\u000A')
\r | Het teken voor een carriage-return ('\u000D')
\f | Het teken voor form-feed ('\u000C')
\a | Het waarschuwingsteken (bel) ('\u0007')
\e | Het escape-teken ('\u001B')
\cx | Het besturingsteken dat overeenkomt met x
\0n | Het teken met de octale waarde 0n (0 <= n <= 7)
\0nn | Het teken met de octale waarde 0nn (0 <= n <= 7)
\0mnn | Het teken met de octale waarde (0 <= m <= 3, 0 <= n <= 7)
\xhh | Het teken met de hexadecimale waarde 0xhh

Tabel 16.3. Regex - Aanhalingen

De constructie... | ...komt overeen met het volgende
--- | ---
\ | Niets, maar quote het volgende teken. Dit is vereist als u een van de metatekens !$()*+.<>?[\]^{|} zou willen invoeren om overeen te komen als hetzelfde teken.
\\ | Dit is bijvoorbeeld het teken voor een backslash
\Q | Niets, maar quote alle tekens tot \E
\E | Niets, maar beëindigt quoten dat werd gestart door \Q

Tabel 16.4. Regex - Klassen voor Unicode-blokken en categorieën

De constructie... | ...komt overeen met het volgende
--- | ---
\p{InGreek} | Een teken in het Griekse blok (eenvoudig blok)
\p{Lu} | Een hoofdletter (eenvoudige categorie)
\p{Sc} | Een valutasymbool
\P{InGreek} | Elk teken met uitzondering van die in het Griekse blok (negatie)
[\p{L}&&[^\p{Lu}]] | Elke letter met uitzondering van hoofdletters (subtractie)

Tabel 16.5. Regex - Tekenklassen

De constructie... | ...komt overeen met het volgende
--- | ---
[abc] | a, b, of c (eenvoudige klasse)
[^abc] | Elk teken met uitzondering van a, b, of c (negatie)
[a-zA-Z] | a tot en met z of A tot en met Z inclusief (bereik)

Tabel 16.6. Regex - Voorgedefinieerde tekenklassen

De constructie... | ...komt overeen met het volgende
--- | ---
. | Elk teken (met uitzondering van regeleinden)
\d | Een getal: [0-9]
\D | Geen getal: [^0-9]
\s | Een teken voor witruimte: [ \t\n\x0B\f\r]
\S | Een teken niet zijnde witruimte: [^\s]
\w | Een woordteken: [a-zA-Z_0-9]
\W | Een teken voor geen-woord: [^\w]

Tabel 16.7. Regex - Overeenkomsten voor begrenzingen

De constructie... | ...komt overeen met het volgende
--- | ---
^ | Het begin van een regel
$ | Het einde van een regel
\b | Een woordgrens
\B | Grens voor geen-woord

Tabel 16.8. Regex - Gulzige parameters

De constructie... | ...komt overeen met het volgende
--- | ---
X? | X, één maal of helemaal niet
X* | X, nul of meer keren
X+ | X, één of meer keren

### Opmerking

Gulzige parameters zullen overeenkomen met zoveel als voor hen mogelijk is. Bijvoorbeeld: a+? zal overeenkomen met de aaa in aaabbb

Tabel 16.9. Regex - Weigerachtige (niet-gulzige) parameters

De constructie... | ...komt overeen met het volgende
--- | ---
X?? | X, één maal of helemaal niet
X*? | X, nul of meer keren
X+? | X, één of meer keren

### Opmerking

Weigerachtige (niet-gulzige) parameters zullen overeenkomen met zo weinig als voor hen mogelijk is. a+? zal bijvoorbeeld overeen komen met de eerste a in aaabbb

Tabel 16.10. Regex - Logische operatoren

De constructie... | ...komt overeen met het volgende
--- | ---
XY | X gevolgd door Y
X|Y | Of X óf Y
(XY) | XY als een enkele groep

## 1. Regex-programma's en voorbeelden van gebruik

Er zijn een aantal interactieve programma's beschikbaar om reguliere uitdrukkingen te ontwikkelen en te testen. Zij volgen in het algemeen allemaal hetzelfde patroon (zie hieronder voor een voorbeeld van de Regular Expression Tester): de reguliere uitdrukking (bovenste item) analyseert de zoektekst (tekstvak in het midden), wat de hits oplevert, weergegeven in het tekstvak met het resultaat.

Afbeelding 16.1. Regex Tester

Zie The Regex Coach voor Windows, Linux, Mac, FreeBSD versies van een zelfstandig programma. Dat is vrijwel identiek aan het bovenstaande voorbeeld.

Een fijne collectie van handige gevallen van reguliere uitdrukkingen kan worden gevonden in OmegaT zelf (zie Opties > Segmentatie). De volgende lijst bevat uitdrukkingen die u misschien handig vindt bij het doorzoeken van het vertaalgeheugen:

Tabel 16.11. Regex - Voorbeelden van reguliere uitdrukkingen in vertalingen

Reguliere uitdrukking | Vindt het volgende:
--- | ---
(\b\w+\b)\s\1\b | dubbele woorden
[\.,]\s*[\.,]+ | komma of een punt, gevolgd door spaties en weer een andere komma of punt
\. \s+$ | extra spaties na de punt aan het einde van de regel
\s+a\s+[aeiou] | Engels: woorden, beginnend met een klinker, zouden moeten worden voorafgegaan door "an", niet "a"
\s+an\s+[^aeiou] | Engels: dezelfde controle als hierboven, maar met betrekking tot medeklinkers ("a", niet "an")
\s{2,} | meer dan één spatie
\.[A-Z] | Punt, gevolgd door een hoofdletter - mogelijk ontbreekt er een spatie tussen de punt en het begin van een nieuwe regel?
\bis\b | zoeken naar “is”, niet “thuis” of “isn't” etc.

Terug |  | Volgende
Hoofdstuk 15. Zoeken | Begin | Hoofdstuk 17. Woordenboeken