6. Motivation and Background (動機と背景)
6. Motivation and Background (動機と背景)
正規表現は当初, ブール一致関数 (Boolean Matching Function) をサポートする形式言語 (Formal Language) を記述することを目的としていましたが, 一致したテキストの任意の部分の抽出と置換をサポートする解析関数 (Parsing Functions) によって強化されてきました。これらの機能の蓄積により, 解析正規表現ライブラリは, 処理のために提出された正規表現を制御する攻撃者によってサービス拒否攻撃 (Denial-of-Service Attacks) で悪用される可能性のあるバグや驚くべきパフォーマンス低下の影響を受けやすくなっています。I-Regexp は, 相互運用性を提供し, このような攻撃に対する脆弱性を低減するように設計されていますが, そのトレードオフとして, その唯一の機能は, 文字シーケンスが正規表現と一致するかどうかについてブール応答を提供することです。
6.1 Implementing I-Regexp (I-Regexp の実装)
XSD 正規表現は, 広く実装されている解析正規表現方言に実装またはマッピングするのが比較的容易ですが, 次の顕著な例外があります:
-
文字クラス減算 (Character Class Subtraction)。これは多くの仕様で非常に有用な機能ですが, 残念ながら解析正規表現方言にはほとんど存在しません。したがって, I-Regexp から省略されています。
-
複数文字エスケープ (Multi-Character Escapes)。
\d,\w,\sおよびそれらの大文字補数クラスは, 正規表現フレーバー間で大きな変動を示します。したがって, それらは I-Regexp から省略されています。 -
すべての正規表現実装が
\p{Nd}などの構造を実行できる Unicode テーブル (Unicode Tables) へのアクセスをサポートしているわけではありませんが,\p/\P機能は現在一般的にかなり広く利用可能です。原則として, これらを文字クラスマッチに変換することは可能ですが, これもこれらのテーブルへのアクセスが必要です。したがって, 厳しく制約された環境の正規表現ライブラリは I-Regexp 準拠をサポートできない可能性があります。