メインコンテンツまでスキップ

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 で囲みます。