1 个稳定版本
1.0.1 | 2023 年 12 月 3 日 |
---|
#8 in #easy
52KB
235 行代码(不包括注释)
简单正则表达式库
一个用于构建正则表达式的简单 Rust 库。
特性
- 表达式构建模式:使用链式构建模式轻松构建正则表达式。
- 简洁的 API:API 被设计得简洁直观,便于构建复杂的正则表达式模式。
- 修饰符支持:为正则表达式模式添加如大小写不敏感、全局搜索、多行和点通配符等修饰符。
- 量词:使用量词如零次或多次、一次或多次、零次或一次、精确重复、最小重复和范围重复。
- ANSI 格式化:包括用于添加终端输出的颜色的 ANSI 格式化模块。
ANSI 模块
颜色
fg_black(text: String) -> String
: 以黑色前景色格式化给定的文本。fg_red(text: String) -> String
: 以红色前景色格式化给定的文本。fg_green(text: String) -> String
: 以绿色前景色格式化给定的文本。fg_yellow(text: String) -> String
: 以黄色前景色格式化给定的文本。fg_blue(text: String) -> String
: 以蓝色前景色格式化给定的文本。fg_purple(text: String) -> String
: 以紫色前景色格式化给定的文本。fg_cyan(text: String) -> String
: 以青色前景色格式化给定的文本。fg_white(text: String) -> String
: 使用白色前景色格式化给定的文本。
RegexBuilder 结构
正则表达式构建器。
方法
函数 | 描述 | 示例 | 结果 |
---|---|---|---|
new() -> Self |
创建一个 RegexBuilder 的新实例。 |
RegexBuilder::new() |
RegexBuilder 实例 |
literal(字符) -> Self |
将一个字符字面量追加到正则表达式中。 | .literal('a') |
"\a" |
字符串(字符) -> Self |
将一个字符串追加到正则表达式中。 | .字符串("word") |
"word" |
dot() -> Self |
将一个点 (.) 追加到正则表达式中,匹配任意单个字符。 | .dot() |
"." |
escape(字符) -> Self |
将一个转义字符追加到正则表达式中。 | .escape('[') |
"\[" |
start_of_line() -> Self |
将行首锚点 (^) 追加到正则表达式中。 | .start_of_line() |
"^" |
end_of_line() -> Self |
将行尾锚点 ($) 追加到正则表达式中。 | .end_of_line() |
"$" |
character_class(chars: &str) -> Self |
将一个字符类追加到正则表达式中。 | .character_class("abc") |
"[abc]" |
negated_character_class(chars: &str) -> Self |
将一个否定字符类追加到正则表达式中。 | .negated_character_class("abc") |
"[^abc]" |
range_character_class(start: 字符,end: 字符) -> Self |
将一个范围字符类追加到正则表达式中。 | .range_character_class('a', 'z') |
"[a-z]" |
digit() -> Self |
将一个数字字符类追加到正则表达式中。 | .digit() |
"\d" |
non_digit() -> Self |
将一个非数字字符类追加到正则表达式中。 | .non_digit() |
"\D" |
word_character() -> Self |
将一个单词字符类追加到正则表达式中。 | .word_character() |
"\w" |
non_word_character() -> Self |
将一个非单词字符类追加到正则表达式中。 | .non_word_character() |
"\W" |
whitespace() -> Self |
将一个空白字符类追加到正则表达式中。 | .whitespace() |
"\s" |
non_whitespace() -> Self |
将一个非空白字符类追加到正则表达式中。 | .non_whitespace() |
"\S" |
zero_or_more(regex:RegexBuilder) -> Self |
将一个零次或多次量词追加到正则表达式中。 | .zero_or_more(RegexBuilder::new().character_class("a")) |
"[a]*" |
one_or_more(regex:RegexBuilder) -> Self |
将一个一次或多次量词追加到正则表达式中。 | .one_or_more(RegexBuilder::new().character_class("a")) |
"[a]+" |
zero_or_one(regex:RegexBuilder) -> Self |
将一个零次或一次量词追加到正则表达式中。 | .zero_or_one(RegexBuilder::new().character_class("a")) |
"[a]?" |
exact_repetitions(regex:RegexBuilder,n: usize) -> Self |
将一个精确重复的量词追加到正则表达式中。 | .exact_repetitions(RegexBuilder::new().digit(), 3) |
"\d{3}" |
min_repetitions(regex:RegexBuilder,n: usize) -> Self |
将一个最小重复的量词追加到正则表达式中。 | .min_repetitions(RegexBuilder::new().digit(), 3) |
"\d{3,}" |
range_repetitions(regex:RegexBuilder,n: usize,m: usize) -> Self |
将一个范围重复的量词追加到正则表达式中。 | .range_repetitions(RegexBuilder::new().digit(), 3, 5) |
"\d{3,5}" |
group(regex:RegexBuilder) -> Self |
将一个组追加到正则表达式中。 | .group(RegexBuilder::new().character_class("ab")) |
"(?:[ab])" |
backreference(group_number: usize) -> Self |
将一个反向引用追加到正则表达式中的捕获组。 | .backreference(1) |
"\1" |
word_boundary() -> Self |
将一个单词边界锚点 (\b) 追加到正则表达式中。 | .word_boundary() |
"\b" |
non_word_boundary() -> Self |
将一个非单词边界锚点 (\B) 追加到正则表达式中。 | .non_word_boundary() |
"\B" |
case_insensitive(regex:RegexBuilder) -> Self |
将一个不区分大小写的修饰符追加到正则表达式中。 | .case_insensitive(RegexBuilder::new().character_class("a")) |
"(?i[a])" |
global_search(regex:RegexBuilder) -> Self |
将一个全局搜索修饰符追加到正则表达式中。 | .global_search(RegexBuilder::new().character_class("a")) |
"(?g[a])" |
multiline(regex:RegexBuilder) -> Self |
将一个多行修饰符追加到正则表达式中。 | .multiline(RegexBuilder::new().character_class("a")) |
"(?m[a])" |
dot_all(regex:RegexBuilder) -> Self |
将一个点匹配所有字符的修饰符追加到正则表达式中,允许 '.' 匹配换行符。 | .dot_all(RegexBuilder::new().character_class("a")) |
"(?s[a])" |
alternative(regex1:RegexBuilder,regex2:RegexBuilder) -> Self |
将一个可选的 (|) 追加到正则表达式中,允许提供的模式中的任意一个匹配。 | .alternative(RegexBuilder::new().character_class("a"), RegexBuilder::new().character_class("b")) |
"[a]|[b]" |
capturing_group(regex:RegexBuilder) -> Self |
将一个捕获组追加到正则表达式中。 | .capturing_group(RegexBuilder::new().character_class("a")) |
"([a])" |
optional(regex:RegexBuilder) -> Self |
将给定的模式追加到正则表达式中,使其匹配零次或一次。 | .optional(RegexBuilder::new().character_class("a")) |
"([a])?" |
dash_space_character_class() -> Self |
将字符类 [-\\s] 追加到正则表达式中。 |
.dash_space_character_class() |
"[-\s]" |
to_regex() |
将当前的 RegexBuilder 转换为一个 Regex 对象。 |
"返回一个 Result<Regex, regex::Error> ." |
|
to_regex_or_panic() |
将当前的 RegexBuilder 转换为 Regex 对象,如果发生错误则引发恐慌。 |
"返回一个 Regex 对象。" |
下载
要使用此库,请将以下内容添加到您的 Cargo.toml
文件中
[dependencies]
simple-regex = "1.0.0"
示例
use simple_regex::RegexBuilder;
let regex = RegexBuilder::new().literal('a').build();
assert_eq!(regex, "a");
更多示例请见 https://github.com/Animemchik/simple-regex/tree/main/examples
请确保根据最新发布版调整依赖项中的版本号。
依赖项
~2.1–3MB
~53K SLoC