Adding lookbehinds to rust-lang/regex
10 months ago
- #rust
- #regex
- #lookbehind
- 在Rust正则表达式引擎中实现无界无捕获组的后向断言
- 后向断言允许正则表达式对前置文本进行条件判断而无需将其包含在匹配结果中
- 同时支持否定型后向断言,用于断言某模式不存在于前置位置
- 该引擎采用模块化设计:'regex-syntax'负责解析,'regex-automata'负责匹配
- 通过新增'WriteLookAround'和'CheckLookAround'两种NFA状态对PikeVM引擎进行改造
- 实现了性能优化策略,避免不必要地扫描目标文本末尾
- 有界后向断言的优化使基准测试性能提升达150倍
- 支持回溯记忆功能的回溯引擎也扩展了对后向断言的支持
- 基准测试显示其速度比Python的're'模块慢2-5倍,但保持线性时间复杂度
- 该成果为前向断言等未来扩展奠定基础,并丰富了Rust生态