This repository has been archived by the owner. It is now read-only.
Super Fast Regex in Go
Go C
Clone or download
beyondbill Merge pull request #6 from moovweb/use-absolute-path-cgo
use SRCDIR to resolve absolute path
Latest commit cb849ac Feb 24, 2016
Failed to load latest commit information.
bstorm Merge Feature Branch go1.4.2 Apr 14, 2015
AUTHOR prepare for open-sourcing it Oct 19, 2011
LICENSE prepare for open-sourcing it Oct 19, 2011 readme updates Sep 20, 2012
VERSION bump version Apr 18, 2012
chelper.c use default syntax and encoding Jun 7, 2012
quotemeta.go new build May 2, 2012

Rubex : Super Fast Regexp for Go

by Zhigang Chen ( or


A simple regular expression library that supports Ruby's regexp syntax. It implements all the public functions of Go's Regexp package, except LiteralPrefix. By the benchmark tests in Regexp, the library is 40% to 10X faster than Regexp on all but one test. Unlike Go's Regrexp, this library supports named capture groups and also allow "\1" and "\k" in replacement strings.

The library calls the Oniguruma regex library (5.9.2, the latest release as of now) for regex pattern searching. All replacement code is done in Go. This library can be easily adapted to support the regex syntax used by other programming languages or tools, like Java, Perl, grep, and emacs.


First, ensure you have Oniguruma installed. On OS X with brew, its as simple as

brew install oniguruma

On Ubuntu...

sudo apt-get install libonig2

Now that we've got Oniguruma installed, we can install Rubex!

go install

Example Usage

import "rubex"

rxp := rubex.MustCompile("[a-z]*")
if err != nil {
    // whoops
result := rxp.FindString("a me my")
if result != "" {
    // FOUND A STRING!! YAY! Must be "a" in this instance
} else {
    // no good