#regex #low-level #focus #user #state #matching #user-control

nytri

一个注重用户控制的底层正则表达式库

1 个不稳定版本

0.0.0 2022年1月30日

#69 in #focus

AGPL-3.0

52KB
890

nytri — 非典型正则表达式实现

nytri 是一个注重用户控制的底层正则表达式库。

这意味着什么?在实践中,这意味着 nytri 被设计为为用户提供对底层正则表达式引擎的非同寻常的访问级别。例如:

  • 状态匹配 - 即逐个部分提供匹配片段
  • 保存和恢复匹配状态
  • ... 以及更多计划中的功能。

此库处于初始开发阶段。 它不应用于任何严肃的环境,并且其功能集远未达到一个高质量正则表达式实现应有的水平。

当前 & 计划功能

在阅读此列表之前请注意:nytri 将始终保证线性时间匹配。因此,某些功能无法完全实现(例如反向引用)。

当前

  • (非常) 基本全文匹配(分组、选择、字面量)
  • 状态匹配(通过 Matcher::feed & Matcher::is_match
  • 匹配器状态保存 & 恢复(通过 Matcher::get_state & Matcher::from_state

计划

  • 错误显示选项 & 配置
  • 语法
    • 所有: .*+? — 带有标准意义。
    • 字符转义
    • (ASCII) 字符类
    • Unicode 字符类
  • 匹配器配置 — 将在未来明确
  • 提取捕获组(命名和未命名)
    • 可能:有意不捕获某些组,以提高效率。
  • 占有性捕获组
  • 前瞻 & 后顾(及其负变体)
  • 泛型原子和文本类型(例如,与 char&str 的替代品,或匹配 &[u8] 实现为 "另一种文本类型")
  • 对反向引用的支持有限(存在可以线性匹配的有用子集)

依赖关系

~290–750KB
~18K SLoC