An NFA-based regex engine with a library and command-line tool.
 
 
 
Go to file
Aadhavan Srinivasan 1d32865e76 Added extra check if fileContainsNullChar returns err; pass filename to it instead of file
kg Added extra check if fileContainsNullChar returns err; pass filename to it instead of file
regex Added comment to function
.gitignore Updated gitignore to contain new executable name
LICENSE Updated license
Makefile Makefile changes
README.md Updated README
go.mod Updated module name to 'kleingrep' (Let's goo!)
go.sum Print matched content in color

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.