xeger

package module
v0.0.0-...-a7be2df Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 29, 2025 License: Apache-2.0 Imports: 9 Imported by: 0

README

xeger-go

Go Version License

根据正则表达式反向生成匹配的随机字符串。

功能特性

  • 🎲 根据正则表达式生成匹配的随机字符串
  • 🔄 支持常见正则语法:字符类、量词、分组、选择等
  • 📁 支持从文件批量读取正则表达式
  • 🔒 并发安全
  • 🛠️ 提供命令行工具

安装

go get github.com/gyyyy/xeger-go

快速开始

作为库使用
package main

import (
    "fmt"
    "github.com/gyyyy/xeger-go"
)

func main() {
    // 创建 Xeger 实例,参数为量词最大展开次数增量(0 使用默认值 10)
    x := xeger.New(0)

    // 从正则表达式字符串生成
    result, err := x.GenerateFromString(`[a-z]+@[a-z]+\.(com|org|net)`)
    if err != nil {
        panic(err)
    }
    fmt.Println(result) // 例如:abc@example.com
}
使用编译后的正则表达式
import "regexp"

reg := regexp.MustCompile(`\d{3}-\d{4}-\d{4}`)
result, err := x.Generate(reg)
// 例如:123-4567-8901
从 Reader 批量生成
import "strings"

reader := strings.NewReader("[a-z]+\n\\d{4}\n(foo|bar)")
results := x.GenerateFromReader(reader)
// 按行读取正则,返回生成结果切片

命令行工具

安装
go install github.com/gyyyy/xeger-go/cmd@latest

# 重命名为 xeger(可选)
mv $(go env GOPATH)/bin/cmd $(go env GOPATH)/bin/xeger
使用方法
# 基本用法:生成匹配正则的字符串
xeger -r "[a-z]{5}"

# 指定生成次数(1-100)
xeger -r "\d{3}-\d{4}" -n 10

# 对输出进行编码(html/uri/query)
xeger -r "<script>" -e html

# 从文件读取正则表达式
xeger -f patterns.txt

# 输出到文件
xeger -r "[A-Z]{10}" -n 20 -o output.txt
参数说明
参数 说明 默认值
-r 正则表达式 -
-n 输出次数(1-100) 1
-e 编码模式:html/uri/query -
-f 输入文件路径(按行读取正则) -
-o 输出文件路径 标准输出

支持的正则语法

语法 说明 示例
字面量 直接匹配字符 hello
. 任意字符(可打印 ASCII) .+
[abc] 字符类 [a-zA-Z0-9]
[^abc] 否定字符类 [^0-9]
\d \D 数字 / 非数字 \d{4}
\w \W 单词字符 / 非单词字符 \w+
\s \S 空白 / 非空白 \s*
* 零次或多次 a*
+ 一次或多次 a+
? 零次或一次 a?
{n} 恰好 n 次 a{3}
{n,} 至少 n 次 a{2,}
{n,m} n 到 m 次 a{2,5}
(...) 捕获组 (abc)+
| 选择 cat|dog
\b 词边界 \bword\b

示例

x := xeger.New(0)

// 邮箱格式
x.GenerateFromString(`[a-z]+@[a-z]+\.(com|org|net)`)
// => "abc@xyz.com"

// IP 地址格式
x.GenerateFromString(`\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}`)
// => "192.168.1.100"

// 手机号格式
x.GenerateFromString(`1[3-9]\d{9}`)
// => "13812345678"

// UUID 格式
x.GenerateFromString(`[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}`)
// => "a1b2c3d4-e5f6-7890-abcd-ef1234567890"

许可证

MIT License

Documentation

Index

Constants

View Source
const DefaultMaxExpand = 10

DefaultMaxExpand 量词(*、+、{n,})的默认最大展开次数增量

Variables

This section is empty.

Functions

This section is empty.

Types

type Xeger

type Xeger struct {
	// contains filtered or unexported fields
}

Xeger 根据正则表达式反向生成匹配的随机字符串

func New

func New(maxExpand int) *Xeger

New 创建一个使用默认配置的 Xeger 实例

参数:

  • maxExpand: 量词的最大展开次数增量

返回:

  • *Xeger: 新创建的 Xeger 实例

func (*Xeger) Generate

func (x *Xeger) Generate(reg *regexp.Regexp) (result []byte, err error)

Generate 根据编译后的正则表达式生成匹配的随机字节序列

参数:

  • reg: 编译后的正则表达式

返回:

  • []byte: 生成的匹配字节序列
  • error: 可能发生的错误

func (*Xeger) GenerateFromReader

func (x *Xeger) GenerateFromReader(reader io.Reader) []string

GenerateFromReader 从 Reader 按行读取正则表达式,逐行生成匹配的字符串

参数:

  • reader: io.Reader 接口,用于读取正则表达式字符串

返回:

  • []string: 生成的匹配字符串切片

func (*Xeger) GenerateFromString

func (x *Xeger) GenerateFromString(s string) (string, error)

GenerateFromString 根据正则表达式字符串生成匹配的随机字符串

参数:

  • s: 正则表达式字符串

返回:

  • string: 生成的匹配字符串
  • error: 可能发生的错误

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL