#decode #regex #capture #regular #expression #data

regex-decode

将正则表达式的捕获解码成 Rust 数据类型

1 个不稳定版本

使用旧的 Rust 2015

0.1.0 2016年12月23日

#85#regular

MIT 许可证

15KB
371 代码行

regex-decode

一个用于将正则表达式捕获提取到结构体中的 Rust 库。

Build Status

用法

将此添加到您的 Cargo.toml

[dependencies]
regex-decode = "0.1"

并添加到您的 crate 根目录

extern crate regex_decode;

以下是一个简单的示例,演示如何将命名捕获提取到结构体中。

extern crate regex;
extern crate regex_decode;
extern crate rustc_serialize;

use regex::Regex;
use regex_decode::decode;

#[derive(RustcDecodable)]
struct Capture {
    pub title: String,
    pub year: usize,
}

fn test() {
    let re = Regex::new(r"'(?P<title>[^']+)'\s+\((?P<year>\d{4})\)")
                       .unwrap();
    let text = "Not my favorite movie: 'Citizen Kane' (1941).";

    let val = decode::<Capture>(&re, &text).unwrap();

    assert_eq!(&val.title, "Citizen Kane");
    assert_eq!(val.year, 1941);
}

如果您不想创建命名结构体,也可以提取到元组中。

extern crate regex;
extern crate regex_decode;
extern crate rustc_serialize;

use regex::Regex;
use regex_decode::decode;

fn test() {
    let re = Regex::new(r"'(?P<title>[^']+)'\s+\((?P<year>\d{4})\)")
                       .unwrap();
    let text = "Not my favorite movie: 'Citizen Kane' (1941).";

    let (title, year) = decode::<(String, usize)>(&re, &text).unwrap();

    assert_eq!(&title, "Citizen Kane");
    assert_eq!(year, 1941);
}

依赖项

~7MB
~147K SLoC