2 个版本
0.1.1 | 2023 年 2 月 1 日 |
---|---|
0.1.0 | 2023 年 1 月 24 日 |
#1171 in 文本处理
6KB
82 代码行
strmatch
在 Rust 中使用正则表达式有条件地匹配字符串,无需过多样板代码。是的,这使用了 once_cell
。
使用方法
use strmatch::strmatch;
#[derive(PartialEq, Eq, Debug)]
enum StringType {
Phone,
Email,
Others,
}
let email = "[email protected]";
let result = strmatch!(email => {
r#"(\d{4})-(\d{2})-(\d{2})"# => StringType::Phone,
r#"^([a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6})*$"# => StringType::Email,
_ => StringType::Others
});
assert_eq!(StringType::Email, result);
let result = strmatch!("[email protected]" => {
// Phone
r#"(\d{4})-(\d{2})-(\d{2})"# => {
1 + 2
},
// Email
r#"^([a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6})*$"# => {
3 + 4
},
_ => 5,
});
assert_eq!(7, result);
依赖项
~2.2–3MB
~54K SLoC