Passa al contenuto principale

5. Mapping I-Regexp to Regexp Dialects (Mappatura di I-Regexp ai dialetti Regexp)

5. Mapping I-Regexp to Regexp Dialects (Mappatura di I-Regexp ai dialetti Regexp)

Il materiale in questa sezione non è normativo. È fornito come guida agli sviluppatori che desiderano utilizzare gli I-Regexp nel contesto di altri dialetti di espressioni regolari.

5.1 Multi-Character Escapes (Escape multi-carattere)

I-Regexp non supporta gli escape multi-carattere (Multi-Character Escapes, MCE) comuni e le classi di caratteri costruite attorno ad essi. Questi possono solitamente essere sostituiti come mostrato dagli esempi nella Tabella 1.

MCE/class:Replace with:
\S[^ \t\n\r]
[\S ][^\t\n\r]
\d[0-9]

Tabella 1: Esempi di sostituzioni per escape multi-carattere

Si noti che la semantica di \d nelle espressioni regolari XSD è quella di \p{Nd}. Tuttavia, questo includerebbe tutti i caratteri Unicode che sono cifre in vari sistemi di scrittura, che quasi certamente non è ciò che è richiesto nelle pubblicazioni IETF.

Il costrutto \p{IsBasicLatin} è essenzialmente un riferimento all'ASCII legacy. Può essere sostituito dalla classe di caratteri [\u0000-\u007f].

5.2 XSD Regexps

Qualsiasi I-Regexp è anche un'espressione regolare XSD [XSD-2], quindi la mappatura è una funzione di identità (Identity Function).

Si noti che alcuni errori per [XSD-2] sono stati corretti in [XSD-1.1-2]. Pertanto, è anche incluso nei riferimenti normativi (Sezione 9.1). XSD 1.1 è meno ampiamente implementato di XSD 1.0, e le implementazioni di XSD 1.0 probabilmente includono queste correzioni di bug. Ai fini e agli scopi di questa specifica, un'implementazione delle espressioni regolari XSD 1.0 è equivalente a un'implementazione delle espressioni regolari XSD 1.1.

5.3 ECMAScript Regexps

Eseguire i seguenti passaggi su un I-Regexp per ottenere un'espressione regolare ECMAScript [ECMA-262]:

  • Per qualsiasi punto (.) non escapato al di fuori delle classi di caratteri (prima alternativa della produzione charClass), sostituire il punto con [^\n\r].
  • Avvolgere il risultato in ^(?: e )$.

L'espressione regolare ECMAScript deve essere interpretata come un modello Unicode (Unicode Pattern) (flag "u"; vedere la Sezione 21.2.2 "Semantica dei modelli" (Pattern Semantics) di [ECMA-262]).

Si noti che dove è richiesto un letterale di espressione regolare (Regexp Literal), l'espressione regolare effettiva deve essere racchiusa in /.

5.4 PCRE, RE2, and Ruby Regexps

Per ottenere un'espressione regolare valida in Perl Compatible Regular Expressions (PCRE) [PCRE2], la libreria di espressioni regolari RE2 del linguaggio di programmazione Go [RE2] e il linguaggio di programmazione Ruby, eseguire gli stessi passaggi della Sezione 5.3, tranne che l'ultimo passaggio è:

  • Racchiudere l'espressione regolare in \A(?: e )\z.