8 个版本

0.0.8 2024年1月1日
0.0.6 2023年12月14日
0.0.0 2023年11月30日

#1426 in 文本处理

Download history 14/week @ 2024-03-10 1/week @ 2024-03-17 4/week @ 2024-03-31 1/week @ 2024-05-19

94 每月下载次数

BSD-3-Clause

135KB
2K SLoC

Rust 2K SLoC // 0.0% comments C++ 300 SLoC // 0.0% comments

re2

re2 C++ 库的包装器,用于展示 spack-rs 的用例。

以下语法指南摘自 re2 代码库。

正则表达式语法

本模块使用 re2 库,因此支持正则表达式语法,这与 Perl 的语法类似,但去掉了其中的一些复杂特性。特别是不支持回引用和广义断言,也不支持 \Z

有关 RE2 支持的语法以及与 PCRE 和 PERL 正则表达式的比较,请参阅语法

对于不熟悉 Perl 正则表达式的人来说,以下是一些常用扩展的示例

  • "hello (\\w+) world" -- \w 匹配“单词”字符
  • "version (\\d+)" -- \d 匹配数字
  • "hello\\s+world" -- \s 匹配任何空白字符
  • "\\b(\\w+)\\b" -- \b 匹配非空字符串在单词边界处
  • "(?i)hello" -- (?i) 启用不区分大小写的匹配
  • "/\\*(.*?)\\*/" -- .*? 匹配尽可能少的 .

在编写字符串字面量时需要使用双反斜杠。但是,在编写原始字符串字面量时不应使用它们。

  • r"(hello (\w+) world)" -- \w 匹配“单词”字符
  • r"(version (\d+))" -- \d 匹配数字
  • r"(hello\s+world)" -- \s 匹配任何空白字符
  • r"(\b(\w+)\b)" -- \b 匹配非空字符串在单词边界处
  • r"((?i)hello)" -- (?i) 启用不区分大小写的匹配
  • r"(/\*(.*?)\*/)" -- .*? 匹配尽可能少的 .

当使用UTF-8编码时,不区分大小写的匹配将执行简单的折叠,而不是完整的折叠。

许可证

BSD-3-Clause,以匹配re2的许可证。

依赖项

~1.3–6.5MB
~117K SLoC