An NFA-based regex engine with a library and command-line tool.
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Go to file
Aadhavan Srinivasan 17e897e2d6 Accept escaped hyphens, even outside character class 1 week ago
kg Added extra check if fileContainsNullChar returns err; pass filename to it instead of file 2 weeks ago
regex Accept escaped hyphens, even outside character class 1 week ago
.gitignore Updated gitignore to contain new executable name 2 weeks ago
LICENSE Updated license 3 months ago
Makefile Add options to build unoptimized versions; make optimized the default 1 week ago
README.md Updated README 1 month ago
go.mod Updated module name to 'kleingrep' (Let's goo!) 3 months ago
go.sum Print matched content in color 6 months ago

README.md

Kleingrep

Kleingrep is a regular expression engine, providing a library and command-line tool written in Go.

It aims to provide a more featureful engine, compared to the one in Go's regexp, while retaining some semblance of efficiency.

The engine does not use backtracking, relying on the NFA-based method described in Russ Cox's articles. As such, it is immune to catastrophic backtracking.

It also includes features not present in regexp, such as lookarounds and backreferences.

Syntax

The syntax is, for the most part, a superset of Go's regexp. A full overview of the syntax can be found here.

For more information, see https://pkg.go.dev/gitea.twomorecents.org/Rockingcool/kleingrep/regex.

How it works

I've written about the inner workings of the engine on my blog.