5. Mapping I-Regexp to Regexp Dialects (I-Regexp から正規表現方言へのマッピング)
5. Mapping I-Regexp to Regexp Dialects (I-Regexp から正規表現方言へのマッピング)
このセクションの内容は規範的ではありません。他の正規表現方言のコンテキストで I-Regexp を使用したい開発者へのガイダンスとして提供されます。
5.1 Multi-Character Escapes (複数文字エスケープ)
I-Regexp は, 一般的な複数文字エスケープ (Multi-Character Escapes, MCE) とそれらを中心に構築された文字クラスをサポートしていません。これらは通常, 表 1 の例に示されているように置き換えることができます。
| MCE/class: | Replace with: |
|---|---|
\S | [^ \t\n\r] |
[\S ] | [^\t\n\r] |
\d | [0-9] |
表 1: 複数文字エスケープの置換例
XSD 正規表現での \d の意味は \p{Nd} の意味であることに注意してください。ただし, これにはさまざまな表記体系の数字である すべての Unicode 文字が含まれるため, IETF 出版物で必要とされるものではほぼ確実にありません。
構造 \p{IsBasicLatin} は本質的にレガシー ASCII への参照です。文字クラス [\u0000-\u007f] に置き換えることができます。
5.2 XSD Regexps
任意の I-Regexp は XSD 正規表現 [XSD-2] でもあるため, マッピングは恒等関数 (Identity Function) です。
[XSD-2] のいくつかの正誤表が [XSD-1.1-2] で修正されていることに注意してください。したがって, これも規範的参照 (セクション 9.1) に含まれています。XSD 1.1 は XSD 1.0 ほど広く実装されておらず, XSD 1.0 の実装にはこれらのバグ修正が含まれている可能性があります。この仕様の意図と目的のために, XSD 1.0 正規表現の実装は XSD 1.1 正規表現の実装と同等です。
5.3 ECMAScript Regexps
I-Regexp で次の手順を実行して ECMAScript 正規表現 [ECMA-262] を取得します:
- 文字クラスの外側 (charClass 生成の最初の代替) にあるエスケープされていないドット (
.) については, ドットを[^\n\r]に置き換えます。 - 結果を
^(?:と)$で囲みます。
ECMAScript 正規表現は Unicode パターン (Unicode Pattern) として解釈されるものとします ("u" フラグ。[ECMA-262] のセクション 21.2.2 "パターンセマンティクス" (Pattern Semantics) を参照)。
正規表現リテラル (Regexp Literal) が必要な場合, 実際の正規表現は / で囲む必要があることに注意してください。
5.4 PCRE, RE2, and Ruby Regexps
Perl Compatible Regular Expressions (PCRE) [PCRE2], Go プログラミング言語の RE2 正規表現ライブラリ [RE2], および Ruby プログラミング言語で有効な正規表現を取得するには, セクション 5.3 と同じ手順を実行しますが, 最後の手順は次のとおりです:
- 正規表現を
\A(?:と)\zで囲みます。