#parser-combinator #nom #regex #parser

no-std nom-regex

nom 解析器的正则表达式

2 个不稳定版本

0.2.0 2021年8月21日
0.1.0 2021年7月25日

#81解析工具

Download history 5487/week @ 2024-03-14 7957/week @ 2024-03-21 9387/week @ 2024-03-28 8111/week @ 2024-04-04 4252/week @ 2024-04-11 4133/week @ 2024-04-18 4083/week @ 2024-04-25 4164/week @ 2024-05-02 4155/week @ 2024-05-09 4563/week @ 2024-05-16 4664/week @ 2024-05-23 4441/week @ 2024-05-30 4281/week @ 2024-06-06 3624/week @ 2024-06-13 3601/week @ 2024-06-20 3328/week @ 2024-06-27

15,528 每月下载量
用于 8 个crate(直接使用3个)

MIT 许可证

26KB
470

nom-regex

本crate提供使用regex crate的正则表达式combinators,用于nom parser combinators

示例

use nom::{Err, error::ErrorKind};
use nom_regex::str::re_match;
fn main() {
  let re = regex::Regex::new(r"^\d{4}").unwrap();
  let parser = re_match::<(&str, ErrorKind)>(re);
  assert_eq!(parser("2019"), Ok(("", "2019")));
  assert_eq!(parser("abc"), Err(Err::Error(("abc", ErrorKind::RegexpMatch))));
  assert_eq!(parser("2019-10"), Ok(("", "2019-10")));
}

lib.rs:

使用正则表达式的解析器combinators。

本crate提供使用nom parser combinators的combinators,使用regex crate。

示例

use nom::{Err, error::ErrorKind};
use nom_regex::str::re_match;
fn main() {
  let re = regex::Regex::new(r"^\d{4}").unwrap();
  let parser = re_match::<(&str, ErrorKind)>(re);
  assert_eq!(parser("2019"), Ok(("", "2019")));
  assert_eq!(parser("abc"), Err(Err::Error(("abc", ErrorKind::RegexpMatch))));
  assert_eq!(parser("2019-10"), Ok(("", "2019-10")));
}

依赖

~3–4MB
~73K SLoC