#regex #regular #fluent #expressions #api #text #explain

ezregexp

使用流畅的 API 构建和理解正则表达式

1 个不稳定版本

0.0.1 2020年12月23日

#11 in #explain

MIT 许可协议

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