#regex #string #matching #enums #checking #piece #check

matchable

通过一个 API 检查文本是否与字符串或正则表达式匹配

2 个版本

0.1.1 2022 年 12 月 19 日
0.1.0 2022 年 12 月 19 日

1097文本处理

每月 30 次下载
用于 swc-react-remove-properti…

MIT 许可证

12KB
201

matchable

Crates.io docs.rs

matchable 提供了一个方便的枚举,用于检查文本片段是否与字符串或正则表达式匹配。

此 crate 的常见用法是作为启用 serde 功能的配置值类型(默认禁用),然后用户可以仅通过一个枚举传递字符串和/或正则表达式。之后,您可以使用该枚举检查文本片段是否与字符串/正则表达式匹配或不匹配。

示例

use matchable::Matchable;

assert!(Matchable::Str("Abc".into()).is_match("Abc"));
assert!(!Matchable::Str("Abc".into()).is_match("abc"));
assert!(Matchable::Regex(regex::Regex::new("abc.").unwrap()).is_match("abcd"));

许可证

MIT 许可证

版权所有 © 2022 年至现在 Pig Fang


lib.rs:

matchable 提供了一个方便的枚举,用于检查文本片段是否与字符串或正则表达式匹配。

use matchable::Matchable;

assert!(Matchable::Str("Abc".into()).is_match("Abc"));
assert!(!Matchable::Str("Abc".into()).is_match("abc"));
assert!(Matchable::Regex(regex::Regex::new("abc.").unwrap()).is_match("abcd"));

有关使用方法的详细信息,请参阅 Matchable 的文档。

反序列化

使用此 crate 的一个优点是将数据反序列化为 Matchable。这通常用作配置,并允许用户将字符串或正则表达式作为模式传递。

这里我们使用 JSON 作为示例

如果字符串用斜杠(/)包围,带有或没有可选的标志后缀,则将反序列化为正则表达式

use matchable::Matchable;

let re_digits = serde_json::from_str::<Matchable>(r#""/\\d+/""#).unwrap();
assert!(re_digits.is_match("123"));

// with regex flags
let re_word = serde_json::from_str::<Matchable>(r#""/matchable/i""#).unwrap();
assert!(re_word.is_match("Matchable"));

否则,它将按原样解析为正常字符串。

use matchable::Matchable;

let re1 = serde_json::from_str::<Matchable>(r#""/ab""#).unwrap();
assert!(re1.is_match("/ab"));
assert!(!re1.is_match("ab"));

let re2 = serde_json::from_str::<Matchable>(r#""ab/i""#).unwrap();
assert!(re2.is_match("ab/i"));
assert!(!re2.is_match("AB"));

依赖关系

~2–3.5MB
~56K SLoC