4 个版本 (2 个重大变更)
0.2.0 | 2023 年 4 月 17 日 |
---|---|
0.1.1 | 2023 年 4 月 6 日 |
0.1.0 | 2023 年 3 月 4 日 |
0.0.3-alpha.0 | 2023 年 2 月 11 日 |
#3 in #regexp
20KB
350 代码行
re-set
编译和运行时正则表达式集解析器。
宏用法
use re_set_macros::find;
find!(fn find_identifier "[_[:alpha:]][[:word:]]*");
assert_eq!(find_identifier("foo bar"), Some((0, "foo")));
use re_set_macros::find;
find!(pub fn match_string
// Single quotes
r"'(\\'|.)*?'",
// Double quotes
r#""(\\"|.)*?""#,
// Multi-line strings
r"(?s)`(\\`|.)*?`"
);
let (_, string) = match_string(r#""Hello, world!""#).unwrap();
assert_eq!(string, r#""Hello, world!""#);
use re_set_macros::find;
find!(pub(crate) fn next_token
// 0: Punctuation
"[[:punct:]]+",
// 1: Words
"[[:word:]]+",
// 2: Whitespace
"[[:space:]]+"
);
let result = next_token("foo bar");
assert_eq!(result, Some((1, "foo")));
let (index, token) = result.unwrap();
match index {
0 => println!("Found punctuation: {token}"),
1 => println!("Found word: {token}"),
2 => println!("Found whitespace: {token}"),
_ => unreachable!(),
}
依赖项
~3.5–4.5MB
~89K SLoC