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 在 解析器实现
每月71 次下载
在 9 个crate(直接使用3个)中使用
315KB
7K 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 出错,无法正确地进行 polyfill。这意味着在 .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 许可。
依赖关系
~0–7MB
~34K SLoC