&xwp; gebruikt een combinatie van veel standaarden voor RE syntaxis.
Het functionaliteit niveau is het meest naaste gemodelleerd in uitgebreide vaste uitdrukkingen
(extended regular expressions (ERE's)) zoals ondersteund wordt door de UNIX egrep
en awk programma's.
Sommige verbeteringen door POSIX ge‹ntroduceerd, die typisch gevonden worden in UNIX
ex en vi, en het meest gevonden in GNU programmatuur worden ook ondersteund.
Er gelden de volgende regels (zie BNF definitie voor een formele definitie):
Basis karakters
abc komt overeen met a, dan b,
dan c.
\.
Dit geldt voor de volgende karakters:
~ . ^ $ ( ) { } [ ] ? + * |
B.v. 1\*2 komt overeen met 1, dan *,
dan 2.
\ zelf, moet ook deze worden
overgeslagen. B.v. c:\\config\.sys komt overeen met c:\config.sys.
\n nieuwe regel ASCII 10 \t tab ASCII 9 \r regelterugloop ASCII 13 \b spatie terug ASCII 8 \f papier invoer \e escape ASCII 27 \x07 signaal ASCII 7C en C++ programmeurs zal deze notatie bekend voorkomen. Strikt genomen, overeenkomend met POSIX, als
\x2e in een ERE werd geplaatst
betekende dat "ieder karakter" (ASCII karakter 0x2e is de punt, wat betekent ieder karakter,
zie verderop), maar deze implementatie behandelt het als "een volledig rondje"
\< betekent 'Start van een woord' (zie verderop).
Het karakter achter de backslash wordt meestal gekozen voor iets dat u niet nodig vindt
om over te slaan, dus deze syntaxis mag geen enkel probleem veroorzaken.
Karakter reeksen worden gespecificeerd tussen vierkante haken '[ ]' en geven een reeks van geaccepteerde karakters aan, of mogelijk een reeks van onacceptabele karakters.
[abc] komt overeen met ieder karakter dat kan a, b of c zijn [^abc] komt overeen met ieder karakter dat noch a, b, noch c is [a-z] is de reeks karakters in het bereik 'a' tot 'z' [a-j-t] is de reeks karakters in het bereik 'a' tot 't'Om overeen te komen met een
-, ^, ]
karakter tussen rechte haken, sla het met een backslash over, B.v.
[\])}] komt overeen met ], of ), of }.
U kunt ook complete POSIX karakter classes opgeven in een toegevoegd paar haken
met dubbele punt. In deze context,
[:alnum:] betekent alle alfa numerieke karakters
(met ASCII, hetzelfde als A-Za-z0-9)
[:lower:] betekent alle kakraters met kleine letter
... enz.
B.v., het opgeven van [[:alnum:] \t] staat alle alfanumeriek
karaters toe plus spatie plus tab.
Ieder karakter
De punt (.) komt overeen met ieder enkel karakter, zonder zich druk te maken
wat het eigenlijk is. B.v. t.e komt overeen met the, maar niet met
tree.
Woord samenstellende karakters
GNU ERE's beschrijven de term "woord samenstellend karakter" om ieder alfanummeriek karakter
in op te nemen, of het onderstreep _ karakter om wat typen te besparen.
\w is stenografie voor ieder woord samenstellende karakter en staat gelijk met
[[:alnum:]_] of [A-Za-z0-9_]
\W voor ieder niet woord samenstellende karakter en staat gelijk met
[^[:alnum:]_] of [^A-Za-z0-9_].
Deze stenografie is ongeldig in karakter reeksen binnen vierkante haken
Niet een karakter
Een uitbreing van Microsoft op ERE's is om u toe te staan om te zeggen
"ieder karakter behalve dit karakter" door het vooraf te laten gaan door een tilde ~.
Dat is eenvoudig korter om te typen dan de equivalente vierkante haken karakter reeks
(~a is korter om te typen dan [^a]).
B.v. t~he komt overeen met tie, maar niet met the.
Ankers
Ankers geven condities aan waar een uitdrukking kan voorkomen:
^ past als we aan het begin van een reeks zijn $ past als we aan het einde van een reeks zijn \` GNU alternatieve manier om ^ te schrijven \' GNU alternatieve manier om $ te schrijven \< past als we aan het begin zijn van een woord (of de gehele reeks) \> past als we aan het einde zijn van een woord (of de gehele reeks) \B past als we in een woord zijn \y past als we aan het begin zijn van een woord (of gehele reeks)Hier is "woord" gelijk aan de GNU definitie zoals boven gegeven.
B.v., ^xyz past alleen op xyz als het aan het begin van
een regel is. \<fred past in fred,
freddy, maar niet in alfred.
Herhalingen
Door gebruik te maken van ?, +, {M}, of
{M,N} kunt u naar herhalingern zoeken.
in ab?c past a, dan nul of ‚‚n voorkomen van b, dan c
ab+c past a, dan ‚‚n of meer maal voorkomen van b, dan c
ab*c past a, dan nul of meer maal voorkomen van b, dan c
ab{M}c past a, dan M maal voorkomen van b, dan c
ab{M,}c past a, dan M of meer maal voorkomen van b, dann c
ab{M,N}c past a, dan tussen het M en N maal voorkomen van b, dan c
In het bovenstaande zijn M en N getallen in decimalen, waar indien beide gegeven worden, M <= N moet zijn.
B.v., [A-Za-z_][A-Za-z0-9_]* past op ieder wettige C of C++ ID.
\w{10,} past op minstens 10 woord samenstellende karakters.
\<[0-9]{5}\> past op een getal van 5 cijfers.
Verwisseling
U kunt naar het ‚‚n of het andere iets zoeken door gebruik te maken van het
| symbool. B.v., fred|bill past op fred
of bill. fred|bill|rob past op elk van de 3 namen.
Geneste ERE's
Vierkante haken kunnen worden gebruikt om ERE's te groeperen in sub-ERE's, zo dat
bewerkingstekens zoals de herhalings- of de verwissel- bewerking op hen kunnen worden
toegepast.
B.v., (kikker|zalm)+ past op ‚‚n of meer voorkomens van kikker
of zalm.
Nesten kan verschillende niveaus diep worden uitgevoerd.
Terug verwijzingen
Iedere keer dat een geneste ERE past, wordt, wat paste, vastgelegd. U kunt naderhand een terug verwijzing doen in de hoofd ERE (wat betekent dat wat er ook paste in het begin ook later weer moet passen) door een backslash op te geven met een enkel decimaal getal. Tot in 9 geneste ERE's kan dus worden terug verwezen.
B.v., \2 zegt de tweede geneste ERE moet opnieuw passen.
Met als resultaat, (a|b)(c|d)\2\1 zal passen op acca,
of adda of bcca of bddb.
Merk op dat het bovenstaande voorbeeld geen stenografie is voor het schrijven
van (a|b)(c|d)(c|d)(a|b). Terug verwijzingen referen niet naar de ERE,
maar naar dat wat er op paste.
Terug verwijzingen kunnen in geneste ERE's worden gedaan om terug te verwijzen
naar geneste ERE's. B.v. kikker|((a|bc)d\1) past op
kikker, of ada, of bcdbc,
maar niet op adbc.