#string #regex #comparison #string-pattern #match

stringmatch

在需要字符串比较的地方允许使用正则表达式或字符串

6 个版本 (3 个破坏性更新)

0.4.0 2022年7月27日
0.3.3 2021年12月6日
0.3.2 2021年7月10日
0.3.0 2021年1月10日
0.1.0 2020年9月28日

#589 in 文本处理

Download history 4738/week @ 2024-04-23 4099/week @ 2024-04-30 4011/week @ 2024-05-07 5282/week @ 2024-05-14 4714/week @ 2024-05-21 3762/week @ 2024-05-28 4198/week @ 2024-06-04 4301/week @ 2024-06-11 3870/week @ 2024-06-18 3670/week @ 2024-06-25 3761/week @ 2024-07-02 3926/week @ 2024-07-09 5856/week @ 2024-07-16 5337/week @ 2024-07-23 5430/week @ 2024-07-30 6078/week @ 2024-08-06

23,517 每月下载量
用于 26 个 crate (3 个直接使用)

MIT 许可证

19KB
302

Crates.io docs.rs

允许在需要字符串比较的地方使用正则表达式或字符串。

示例

使用泛型/单态化

此模式更快,但生成的代码更多,二进制文件略大。

如果没有特定偏好,建议选择此选项,因为代码通常更易于编写。

fn accept_needle<N>(needle: N) -> bool
where
    N: Needle,
{
    needle.is_match("Test")
}

现在所有以下操作都将生效

accept_needle("Test");
accept_needle(String::from("Test"));
accept_needle(Regex::new("Test").unwrap());
accept_needle(Regex::new(r"^T.+t$").unwrap());

对于字符串比较,您还可以使用 StringMatch,这允许您更明确地进行比较

accept_needle(StringMatch::from("test").case_insensitive());
accept_needle(StringMatch::from("tes").partial());

默认情况下,StringMatch 匹配整个字符串,并且区分大小写(默认为安全模式)。

最后,还有为 String&str

accept_needle("test".match_case_insensitive());
accept_needle("tes".match_partial());

使用动态分发

此模式略慢,但生成的代码较少,二进制文件略小。

fn accept_needle(needle: &dyn Needle) -> bool
{
   needle.is_match("Test")
}

现在所有以下操作都将生效

accept_needle(&"Test");
accept_needle(&String::from("Test"));
accept_needle(&Regex::new("Test").unwrap());
accept_needle(&Regex::new(r"^T.+t$").unwrap());
accept_needle(&StringMatch::from("test").case_insensitive());
accept_needle(&StringMatch::from("tes").partial());

许可证

此作品根据 MIT 许可证授权。

SPDX-许可证-标识符: MIT

依赖项

~2.2–3.5MB
~57K SLoC