#generator #regex #string-pattern #random #cli #rust

bin+lib advanced_string_generator

基于可定制正则表达式的字符串生成命令行工具

3 个版本

0.1.2 2024 年 8 月 15 日
0.1.1 2024 年 8 月 15 日
0.1.0 2024 年 8 月 15 日

263文本处理

Download history 304/week @ 2024-08-12

304 每月下载量

MIT 许可证

38KB
624

Rust 高级字符串生成器

本项目提供了一个基于正则表达式类似模式的功能强大且灵活的字符串生成器,支持字符类、自定义重复、基于数组的字符串选择、增量值等功能。该应用程序可以编译并作为原生 Rust 库和 WebAssembly (WASM) 环境使用。

演示

以下为本项目的演示 https://igarashi.net/rust-advanced-string-generator/

功能

  • 字符类:支持 \d\w\s\D\W\S 等。
  • 自定义重复:生成类似 \d{2,4} 的字符串模式。
  • 字符范围:使用范围如 [a-z][A-Z][0-9] 来指定字符集。
  • 范围否定:使用模式如 [^a-z] 来指定不包含的字符。
  • 增量值:使用模式如 \i+(升序)和 \i-(降序)来自动递增值。
  • 基于数组的选取:使用模式如 \a\a+\a- 从字符串数组中选择。
  • 分组捕获和反向引用:捕获字符组并在模式中稍后引用它们。
  • WASM 支持:将项目编译成 WebAssembly 并在 Web 环境中使用。

安装

  1. 克隆仓库:
    git clone https://github.com/your-repo/regex_generator.git
    
  2. 导航到项目目录:
    cd regex_generator
    
  3. 构建项目:
    cargo build --release
    

WebAssembly

  1. 确保您已安装 wasm-pack
cargo install wasm-pack
  1. 构建针对 WebAssembly 的项目
wasm-pack build --target web --features wasm
  1. 在您的 Web 项目中使用生成的 WebAssembly 模块。

用法

regex_generator [OPTIONS] PATTERN [INCREMENT] [ARRAY]

示例

  1. 生成一个带有前导零的递增值字符串:

    ./target/release/regex_generator -p '\\i{:10}' -i 43
    
  2. 从数组中生成随机字符串:

    ./target/release/regex_generator -p '[A-Za-z]{5}' -a 'apple,banana,grape'
    
  3. 使用组合模式:

    ./target/release/regex_generator -p '\\w{3}-\\d{2:5}-\\i{:6}' -i 100 -a 'cat,dog,mouse'
    

WASM 示例

import init, { WasmRegexGenerator } from './pkg/regex_generator_wasm.js';

async function run() {
    await init();

    const generator = new WasmRegexGenerator("\\i+\\d\\d", "1299", ["apple", "banana", "cherry"]);
    console.log(generator.generate()); // Outputs: 1300
    console.log(generator.generate()); // Outputs: 1301
}

run();

选项

选项 描述
-h--help 打印帮助信息
-v--version 打印版本信息
-p--pattern 指定要使用的模式
-i--increment 递增的初始值(可选)
-a--array 字符串数组(以逗号分隔)用于 /a 模式(可选)

支持的模式

模式 描述 示例输入 示例输出
\d 09 的任何数字。 \d\d 42, 07
\w 任何“单词”字符:字母、数字和下划线。 \w\w\w abc1X_
\s 任何空白字符(空格、制表符、换行符)。 \s\s \t
\D 任何非数字字符。 \D\D AB--
\W 任何非单词字符。 \W\W **, @#
\S 任何非空白字符。 \S\S\S abca1b
{n,m} nm 之间插入。 \d{2,4} 12, 4321
[abc] 插入字符 abc 中的任意一个。 [abc]{3} abccab
[^abc] 插入除了 abc 之外的任意字符。 [^abc]{3} xyz123
[a-z] 插入从 az 范围内的任意字符。 [a-z]{3} abcxyz
[0-9]{n:z} 插入从 09 的任意数字,以 n 次使用 z 为前导零的方式插入。 [0-9]{3:5} 00827, 00281
\i\i+ 插入递增值,从指定的值开始,每次使用时递增。 \i+\d\d 1300, 1301
\i- 插入递减值,从指定的值开始,每次使用时递减。 \i-\d\d 1299, 1298
\i{:z} 插入递增值,从指定的值开始,带有前导零。 \i{:6} 001299, 001298
\a 从值数组中插入随机字符串。 \a applebanana
\a+ 按升序从数组中插入字符串。 \a+ applebanana
\a- 按降序从数组中插入字符串。 \a- cherrybanana
() 分组字符。 (\d\d) 42
\1 对第一个捕获组进行回溯。 (\d\d)\1 4242
` ` 交替;插入表达式之前或之后的表达式。 `a

测试

原生Rust

要在原生Rust环境中运行测试,请执行以下命令

cargo test

WebAssembly

要构建和测试WebAssembly版本,请按照以下步骤操作

  1. 构建WASM模块

    wasm-pack build --target web --features wasm
    
  2. 创建一个HTML文件来加载和测试WASM模块。

  3. 使用类似Python的http.server的本地服务器提供HTML文件

    python3 -m http.server
    

帮助

要获取帮助信息,请运行

./target/release/regex_generator -h

版本

要检查工具的版本,请运行

./target/release/regex_generator -v

许可证

本项目的许可证为MIT许可证。有关详细信息,请参阅LICENSE文件。

贡献

欢迎贡献!请提交一个pull请求或创建一个问题来报告错误或建议功能。

依赖项

~1–2MB
~38K SLoC