#regex #builder-pattern #regular #expression #easy #simple #regexpr

simple-regex

😎 简洁且易读的正则表达式编写方式

1 个稳定版本

1.0.1 2023 年 12 月 3 日

#8 in #easy

MIT 许可证

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