1 个不稳定版本
使用旧的 Rust 2015
0.1.0 | 2016年12月23日 |
---|
#85 在 #regular
15KB
371 代码行
regex-decode
一个用于将正则表达式捕获提取到结构体中的 Rust 库。
用法
将此添加到您的 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