Skip to content
Genex package for Go
Go
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Create FUNDING.yml Jun 23, 2019
.gitignore Initial commit Mar 9, 2015
LICENSE Initial commit Mar 9, 2015
README.md
count.go gofmt and Go Report Card Mar 12, 2016
count_test.go added test case Mar 13, 2016
generate.go gofmt and Go Report Card Mar 12, 2016
generate_test.go

README.md

genex GoDoc GoCover Go Report Card

Genex package for Go

Easy and efficient package to expand any given regex into all the possible strings that it can match.

This is the code that powers namegrep.

Usage

package main

import (
    "fmt"
    "regexp/syntax"

    "github.com/alixaxel/genex"
)

func main() {
    charset, _ := syntax.Parse(`[0-9a-z]`, syntax.Perl)

    if input, err := syntax.Parse(`(foo|bar|baz){1,2}\d`, syntax.Perl); err == nil {
    	fmt.Println("Count:", genex.Count(input, charset, 3))

    	genex.Generate(input, charset, 3, func(output string) {
    		fmt.Println("[*]", output)
    	})
    }
}

Output

Count: 120

[*] foo0
[*] ...
[*] foo9
[*] foofoo0
[*] ...
[*] foofoo9
[*] foobar0
[*] ...
[*] foobar9
[*] foobaz0
[*] ...
[*] foobaz9
[*] bar0
[*] ...
[*] bar9
[*] barfoo0
[*] ...
[*] barfoo9
[*] barbar0
[*] ...
[*] barbar9
[*] barbaz0
[*] ...
[*] barbaz9
[*] baz0
[*] ...
[*] baz9
[*] bazfoo0
[*] ...
[*] bazfoo9
[*] bazbar0
[*] ...
[*] bazbar9
[*] bazbaz0
[*] ...
[*] bazbaz9

Install

go get github.com/alixaxel/genex

License

MIT

You can’t perform that action at this time.