1 个不稳定版本
0.0.1 | 2020年12月23日 |
---|
#11 in #explain
27KB
575 行
ezregexp
一个使用人类友好型流畅 API 构建正则表达式的 Rust 库。
使用方法
将以下内容添加到您的 Cargo.toml
[dependencies]
ezregexp = "0.0.1"
并将此内容添加到您的 crate 根目录(如果您使用的是 Rust 2015)
extern crate ezregexp;
以下是一个简单示例,匹配 YYYY-MM-DD 格式的日期并捕获年、月和日
use ezregexp::{start_with, digit};
use regex::Regex;
fn main() {
let p =start_with(digit().times(4).named("year"))
.and_then("-")
.and_then(digit().times(2).named("month"))
.and_then("-")
.and_then(digit().times(2).named("day"))
.to_string();
let re = Regex::new(&p.to_string()).unwrap();
let caps = re.captures("2010-03-14").unwrap();
assert_eq!("2010", &caps["year"]);
assert_eq!("03", &caps["month"]);
assert_eq!("14", &caps["day"]);
}
您还可以使用此库从正则表达式生成 API 调用
use ezregexp::{ToCode,explain};
use regex::Regex;
fn main() {
let s = r"(?x)
(?P<year>\d{4}) # the year
-
(?P<month>\d{2}) # the month
-
(?P<day>\d{2}) # the day
";
let re = Regex::new(s).unwrap();
let caps = re.captures("2010-03-14").unwrap();
assert_eq!("2010", &caps["year"]);
assert_eq!("03", &caps["month"]);
assert_eq!("14", &caps["day"]);
println!("{}",explain(s).unwrap().to_code());
}
依赖项
~2MB
~58K SLoC