主要观点:现代网站复杂导致数据提取困难,需比较不同正则引擎。
关键信息:
- 介绍了多种正则引擎,如 re2、rust/regex、pcre2 等。
- 给出了不同引擎在各种场景下的基准测试结果,包括字面量、日期、Cloudflare ReDoS 等。
- 探讨了各引擎的局限性,如 Unicode 处理、边界重复等方面。
重要细节: - re2 由谷歌开发,广泛用于谷歌产品,有 Ruby 绑定 gem;rust/regex 是 Rust 的原生正则引擎,无现成 Ruby 绑定,作者创建了 PoC;pcre2 被广泛采用但 Ruby 绑定过时。
- 基准测试涵盖多种场景,如字面量匹配不同语言文本、日期提取、Cloudflare ReDoS 案例等,展示了不同引擎的性能差异。
- 各引擎在 Unicode 处理、边界重复等方面存在不同的限制和表现,如 re2 对 Unicode 特定匹配器的处理不足,rust/regex 对某些 Unicode 模式的处理等。
- 结论指出 re2 在多数情况下优于 ruby,但在 Unicode 文本方面有局限;rust_regexp 总体最快,无 Unicode 顾虑,rust_regexp set 需谨慎使用,re2 set 比 re2 顺序正则快,且 re2 和 rust_regexp 可处理无效 UTF-8 字节序列,ruby 不行。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。