6. 动机和背景
6. 动机和背景
正则表达式最初旨在描述一种形式语言, 用于支持布尔匹配函数. 后来它们增强了分析功能, 支持提取和替换匹配文本中的任意部分. 随着这些功能不断累积, 解析型 regexp 库更容易出现错误和意外的性能退化; 控制待处理 regexp 的攻击者可利用这些问题发起拒绝服务攻击. I-Regexp 的设计目标是提供互操作性并降低对此类攻击的脆弱性, 其取舍是它唯一的功能是给出字符序列是否由某个 regexp 匹配的布尔响应.
6.1 实现 I-Regexp
XSD regexps 相对容易实现, 或映射到广泛实现的解析型 regexp 方言, 但存在以下值得注意的例外:
-
字符类减法. 这是许多规范中非常有用的功能, 但遗憾的是它在大多数解析型 regexp 方言中缺失. 因此, I-Regexp 省略了该功能.
-
多字符转义.
\d,\w,\s及其大写补集类在不同 regexp 风格之间差异很大. 因此, I-Regexp 省略了它们. -
并非所有 regexp 实现都支持访问 Unicode 表, 而这些表可用于执行
\p{Nd}等构造, 尽管总体而言\p/\P功能现在已经相当普遍. 原则上可以将这些构造转换为字符类匹配, 但这同样需要访问这些表. 因此, 严重受限环境中的 regexp 库可能无法支持 I-Regexp 一致性.