经过半年多的开发,PERL 兼容正则表达式库 10.45 已经发布 PCRE2,用 C 语言编写并根据 BSD 许可分发。这是一个相对较大的版本,包括新功能、一些错误修复以及一些对向后兼容性影响较小的更改。
10.45 版本是新项目维护人员准备的第一个版本,他们感谢 PCRE 和 PCRE2 项目的创建者和维护者 Philip Hazel。
变更清单:
- JIT 编译项目 关注 现在用作 Git 子模块。
- 更新 Unicode 数据至版本 16.
- Unicode Ll、Lt 和 Lu 属性的不区分大小写的映射已被更改以匹配 Perl。以前,/p{Ll}/i 模式仅匹配小写字符(即使指定了不区分大小写的匹配)。此更改还会影响 POSIX 类的不区分大小写的匹配,例如 [:lower:]。
- 添加了新功能 scan_substring。这是一种新类型的断言,它将捕获块的内容与子模式进行匹配。
例如,表达式 b(w++)(*scan_substring:(1).+rh) 查找包含不在最开头的罕见英文字母序列“rh”的单词。 - 增加了对兼容字符类的支持 悉尼科技大学#18 (Unicode 正则表达式),使用新的 PCRE2_ALT_EXTENDED_CLASS 选项。为此,您需要使用 [ 作为字符类中的元字符以及运算符 &&、— 和 ~~,这使您可以轻松地执行字符类的减法和交运算。
例如,为了匹配泰语或希腊语字母(但不匹配这些文字中的字母或其他字符),可以使用表达式 [p{L}&&[p{Thai}||p{Greek}]]。 - 增加了对使用 (?[…]) 语法的 Perl 样式扩展字符类的支持。它还允许表示字符类的减法和交集,但使用的语法与 悉尼科技大学#18 (Unicode 正则表达式)。
例如,为了匹配泰语或希腊语字母(但不匹配这些文字中的字母或其他字符),可以使用表达式 (?[p{L} & (p{Thai} + p{Greek})])。 - 角色类别匹配机制有显著改进。编译的字符类现在更加紧凑,并使用二进制搜索为集合中的大型或复杂字符集提供更快的匹配。
- API 中添加了一个新函数 pcre2_set_optimize() 来管理优化。
- 对 pcre2_substitute() 函数进行了许多改进。
- 其他改进和错误修复。
来源: linux.org.ru
