7 个版本 (重大变更)

0.11.0 2023年11月9日
0.10.0 2023年3月21日
0.9.0 2023年1月14日
0.8.1 2022年12月12日
0.5.0 2022年7月4日

#789解析器实现

Download history 53/week @ 2024-04-07 35/week @ 2024-04-14 49/week @ 2024-04-21 37/week @ 2024-04-28 35/week @ 2024-05-05 30/week @ 2024-05-12 53/week @ 2024-05-19 65/week @ 2024-05-26 49/week @ 2024-06-02 22/week @ 2024-06-09 22/week @ 2024-06-16 35/week @ 2024-06-23 4/week @ 2024-06-30 16/week @ 2024-07-07 28/week @ 2024-07-14 22/week @ 2024-07-21

每月71 次下载
9 个crate(直接使用3个)中使用

MIT/Apache

315KB
7K SLoC

Pomsky logo

Pomsky

一种可移植的1、现代的正则表达式语言

Website Docs Playground VS Code plugin Discord Crates.io

开始使用

要开始,请查看 网站

新功能

阅读 博客变更日志 以了解新功能。

安装

预构建的二进制文件可以在 发布页面 上找到。

Pomsky 还可以通过 cargo 从源安装,使用 cargo install pomsky-bin

兼容性

Pomsky 目前与 PCRE、JavaScript、Java、.NET、Python、Ruby 和 Rust 兼容。必须在编译期间指定正则表达式风味,这样 Pomsky 可以确保生成的正则表达式在目标正则表达式引擎上按预期工作。

注意:如果您正则表达式引擎默认未启用 Unicode 支持,您应启用 Unicode 支持。这在这里 解释

可移植性

Pomsky 致力于尽可能地可移植,在可行的地方填充 Unicode 和不受支持的功能。尽管如此,有些情况下无法实现可移植性

  • 某些功能(例如前瞻、后引用、Unicode 属性)并不在每种风味中都受支持。当您使用不受支持的功能时,Pomsky 将无法编译。

  • \b(单词边界)在 JavaScript 中不是 Unicode 兼容的。因此,Pomsky 仅在禁用 Unicode 时允许单词边界。

  • \w 在 .NET 中处理 Unicode 出错,无法正确地进行 polyfill。这意味着在 .NET 中,[word] 只匹配 LMnNdPc 通用类别,而不是 AlphabeticMNdPcJoin_Control

  • 在 .NET 中,.Codepoint 和字符类(例如 [Latin])只匹配单个 UTF-16 代码单元,而不是代码点。

  • [space] 在 JavaScript 和 Java 中的代码点匹配略有不同。这将得到修复。

  • 当引用的组没有捕获文本时,JavaScript 和 Python 中的回溯引用行为不同。我们对此无能为力,但我们可以将来添加一个警告。

安全

请勿在关键基础设施上编译或执行不受信任的 Pomsky 表达式。这可能会使您容易受到拒绝服务攻击,如 Billion Laughs 攻击

阅读更多

诊断

Pomsky 会寻找错误并显示有用的诊断信息

  • 如果您使用了目标正则表达式风味不支持的功能,则会显示错误
  • 它会检测语法错误,并显示如何解决它们的建议
  • 它会解析反斜杠转义符(在 Pomsky 表达式中不允许)并解释应写入什么
  • 它会寻找可能的错误并显示警告
  • 它会寻找对于某些输入可能非常慢的图案,并且容易受到拒绝服务攻击的影响 (即将推出)

与其他项目的比较

我写了一个与类似项目的深入比较,您可以在 这里 找到。

行为准则

行为准则 可以在这里找到

贡献

您可以通过使用 Pomsky 并提供反馈来做出贡献。如果您发现了一个错误或有问题,请创建一个问题。

我也很高兴接受代码贡献。 更多信息

赞助此项目

访问我的赞助页面

许可

双许可协议下,依据 MIT 许可Apache 2.0 许可

依赖关系

~0–7MB
~34K SLoC