#regex #regex-parser #expression-parser #pomsky #expression-language #parser #syntax

pomsky-syntax

Pomsky 的解析器,一种新的正则表达式语言

5 个版本 (破坏性更新)

0.11.0 2023 年 11 月 9 日
0.10.0 2023 年 3 月 21 日
0.9.0 2023 年 1 月 14 日
0.8.0 2022 年 12 月 12 日
0.7.0 2022 年 9 月 10 日

2182解析器实现 中排名

Download history 46/week @ 2024-03-11 93/week @ 2024-03-18 25/week @ 2024-03-25 120/week @ 2024-04-01 50/week @ 2024-04-08 37/week @ 2024-04-15 55/week @ 2024-04-22 31/week @ 2024-04-29 41/week @ 2024-05-06 34/week @ 2024-05-13 49/week @ 2024-05-20 73/week @ 2024-05-27 37/week @ 2024-06-03 31/week @ 2024-06-10 23/week @ 2024-06-17 43/week @ 2024-06-24

146 每月下载量
7 个包中使用 (通过 pomsky)

MIT/Apache 许可协议

140KB
3K 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 出错,没有正确填充多字节的方法。这意味着在 .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 许可证

依赖关系

~150KB