7 个版本
0.2.1 | 2021年3月30日 |
---|---|
0.2.0 | 2021年3月19日 |
0.2.0-beta.1 | 2021年2月14日 |
0.1.0 | 2021年1月31日 |
#48 在 #capture
30 每月下载量
24KB
584 代码行数,不包括注释
特性
- 捕获组
依赖项
[dependencies]
regex = "1"
regexm = "0.2.1"
用法
简单模式匹配
fn main() {
let text1 = "2020-01-01";
regexm::regexm!(match text1 {
r"^\d{4}$" => println!("yyyy"),
r"^\d{4}-\d{2}$" => println!("yyyy-mm"),
// block
r"^\d{4}-\d{2}-\d{2}$" => {
let yyyy_mm_dd = "yyyy-mm-dd";
println!("{}", yyyy_mm_dd);
}
_ => println!("default"),
});
}
输出
yyyy-mm-dd
生成的代码将是以下内容
fn main() {
let text1 = "2020-01-01";
if regex::Regex::new(r"^\d{4}$").unwrap().is_match(text1) {
println!("yyyy")
} else if regex::Regex::new(r"^\d{4}-\d{2}$").unwrap().is_match(text1) {
println!("yyyy-mm")
} else if regex::Regex::new(r"^\d{4}-\d{2}-\d{2}$")
.unwrap()
.is_match(text1)
{
let yyyy_mm_dd = "yyyy-mm-dd";
println!("{}", yyyy_mm_dd);
} else {
println!("default")
};
}
Let match
fn main() {
let text2 = "foo";
let foo = regexm::regexm!(match text2 {
r"^\d{4}-\d{2}-\d{2}$" => "yyyy-mm-dd",
r"^\d{4}-\d{2}$" => "yyyy-mm",
// block
r"^\d{4}-\d{2}-\d{2}$" => {
let yyyy_mm_dd = "yyyy-mm-dd";
yyyy_mm_dd
}
_ => "default",
});
println!("{}", foo);
}
输出
default
生成的代码将是以下内容
fn main() {
let text2 = "foo";
let foo = if regex::Regex::new(r"^\d{4}-\d{2}-\d{2}$")
.unwrap()
.is_match(text2)
{
"yyyy-mm-dd"
} else if regex::Regex::new(r"^\d{4}-\d{2}$").unwrap().is_match(text2) {
"yyyy-mm"
} else if regex::Regex::new(r"^\d{4}-\d{2}-\d{2}$")
.unwrap()
.is_match(text2)
{
let yyyy_mm_dd = "yyyy-mm-dd";
yyyy_mm_dd
} else {
"default"
};
println!("{}", foo);
}
捕获组
fn main() {
let text1 = "2020-01-02";
regexm::regexm!(match text1 {
// capture groups
captures(r"^(\d{4})-(\d{2})-(\d{2})$") => |caps| println!(
"year: {}, month: {}, day: {}",
caps.get(1).map_or("", |m| m.as_str()),
caps.get(2).map_or("", |m| m.as_str()),
caps.get(3).map_or("", |m| m.as_str())
),
_ => println!("default"),
});
}
输出
2020
01
02
生成的代码将是以下内容
fn main() {
let text1 = "2020-01-02";
if regex::Regex::new(r"^(\d{4})-(\d{2})-(\d{2})$")
.unwrap()
.is_match(text1)
{
let closure = |caps: regex::Captures| {
println!(
"year: {}, month: {}, day: {}",
caps.get(1).map_or("", |m| m.as_str()),
caps.get(2).map_or("", |m| m.as_str()),
caps.get(3).map_or("", |m| m.as_str())
)
};
closure(
regex::Regex::new(r"^(\d{4})-(\d{2})-(\d{2})$")
.unwrap()
.captures(text1)
.unwrap(),
)
} else {
println!("default")
};
}
依赖项
~2–3MB
~53K SLoC