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 在 解析器实现 中排名
146 每月下载量
在 7 个包中使用 (通过 pomsky)
140KB
3K SLoC
入门
要开始,请访问 网站。
最新动态
安装
预构建的二进制文件可以在 发布页面 上找到。
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]
只匹配L
、Mn
、Nd
和Pc
通用类别,而不是Alphabetic
、M
、Nd
、Pc
和Join_Control
。 -
在 .NET 中,
.
、Codepoint
和字符类别(例如[Latin]
)仅匹配单个 UTF-16 代码单元,而不是代码点。 -
[space]
在 JavaScript 和 Java 中匹配不同的代码点。这将得到修复。 -
当引用的组没有捕获的文本时,JavaScript 和 Python 中的回溯行为不同。我们对此无能为力,但我们可以将来添加一个警告。
安全
切勿在您的关键基础设施上编译或执行不受信任的 Pomsky 表达式。这可能会使您容易受到拒绝服务攻击,如 Billion Laughs 攻击。
诊断
Pomsky 寻找错误并显示有用的诊断信息
- 如果您使用的是目标正则表达式类型不支持的功能,它会显示错误
- 它检测语法错误,并显示如何解决它们的建议
- 它解析反斜杠转义(在 Pomsky 表达式中不允许)并解释应该写入什么
- 它寻找可能出现的错误并显示警告
- 它寻找对某些输入可能非常慢的图案,并容易受到拒绝服务攻击的影响 (即将推出)
与其他项目的比较
我写了一篇与类似项目的深入比较,您可以在 这里 找到。
行为准则
行为准则 可以在这里找到。
贡献
您可以通过使用 Pomsky 并提供反馈来做出贡献。如果您发现一个错误或有问题,请创建一个问题。
我还非常愿意接受代码贡献。 更多信息
赞助此项目
许可
双许可于 MIT 许可证 或 Apache 2.0 许可证。
依赖关系
~150KB