經過半年多的開發,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
