5. Mapping I-Regexp to Regexp Dialects (Zuordnung von I-Regexp zu Regexp-Dialekten)
5. Mapping I-Regexp to Regexp Dialects (Zuordnung von I-Regexp zu Regexp-Dialekten)
Das Material in diesem Abschnitt ist nicht normativ. Es wird als Leitfaden für Entwickler bereitgestellt, die I-Regexps im Kontext anderer Dialekte regulärer Ausdrücke verwenden möchten.
5.1 Multi-Character Escapes (Mehrfach-Zeichen-Escapes)
I-Regexp unterstützt keine gängigen Mehrfach-Zeichen-Escapes (Multi-Character Escapes, MCE) und darauf aufbauende Zeichenklassen. Diese können in der Regel wie in den Beispielen in Tabelle 1 gezeigt ersetzt werden.
| MCE/class: | Replace with: |
|---|---|
\S | [^ \t\n\r] |
[\S ] | [^\t\n\r] |
\d | [0-9] |
Tabelle 1: Beispielersetzungen für Mehrfach-Zeichen-Escapes
Beachten Sie, dass die Semantik von \d in XSD-Regexps die von \p{Nd} ist. Dies würde jedoch alle Unicode-Zeichen einschließen, die Ziffern in verschiedenen Schriftsystemen sind, was mit ziemlicher Sicherheit nicht das ist, was in IETF-Publikationen erforderlich ist.
Die Konstruktion \p{IsBasicLatin} ist im Wesentlichen ein Verweis auf Legacy-ASCII. Sie kann durch die Zeichenklasse [\u0000-\u007f] ersetzt werden.
5.2 XSD Regexps
Jedes I-Regexp ist auch ein XSD-Regexp [XSD-2], daher ist die Zuordnung eine Identitätsfunktion (Identity Function).
Beachten Sie, dass einige Errata für [XSD-2] in [XSD-1.1-2] behoben wurden. Daher ist es auch in den normativen Referenzen (Abschnitt 9.1) enthalten. XSD 1.1 ist weniger weit verbreitet als XSD 1.0, und Implementierungen von XSD 1.0 enthalten wahrscheinlich diese Fehlerkorrekturen. Für die Absichten und Zwecke dieser Spezifikation ist eine Implementierung von XSD 1.0 Regexps gleichwertig mit einer Implementierung von XSD 1.1 Regexps.
5.3 ECMAScript Regexps
Führen Sie die folgenden Schritte an einem I-Regexp durch, um einen ECMAScript-Regexp [ECMA-262] zu erhalten:
- Für alle nicht escapten Punkte (
.) außerhalb von Zeichenklassen (erste Alternative der charClass-Produktion), ersetzen Sie den Punkt durch[^\n\r]. - Umhüllen Sie das Ergebnis mit
^(?:und)$.
Der ECMAScript-Regexp ist als Unicode-Muster (Unicode Pattern) zu interpretieren ("u"-Flag; siehe Abschnitt 21.2.2 "Mustersemantik" (Pattern Semantics) von [ECMA-262]).
Beachten Sie, dass dort, wo ein Regexp-Literal (Regexp Literal) erforderlich ist, der tatsächliche Regexp in / eingeschlossen werden muss.
5.4 PCRE, RE2, and Ruby Regexps
Um einen gültigen Regexp in Perl Compatible Regular Expressions (PCRE) [PCRE2], der RE2-Regexp-Bibliothek der Programmiersprache Go [RE2] und der Programmiersprache Ruby zu erhalten, führen Sie dieselben Schritte wie in Abschnitt 5.3 aus, außer dass der letzte Schritt lautet:
- Schließen Sie den Regexp in
\A(?:und)\zein.