Python wrapper for RE2
C++ Python Makefile
Switch branches/tags
Latest commit 33b2273 Apr 28, 2016 @gabrielg gabrielg committed with dreiss Add RE2::Set support
Adds support for RE2::Set, which is a set of patterns that can all be matched
against at once, returning the indexes of the added patterns that match.

* Add re2.Set class.
* Add re2.UNANCHORED, re2.ANCHOR_START, and re2.ANCHOR_BOTH constants for
  specifying how a pattern should be anchored. This is currently only used by
* Add tests for re2.Set.




pyre2 is a Python extension that wraps Google's RE2 regular expression library. It implements many of the features of Python's built-in re module with compatible interfaces.

New Features

  • Regexp objects have a fullmatch method that works like match, but anchors the match at both the start and the end.
  • Regexp objects have test_search, test_match, and test_fullmatch methods that work like search, match, and fullmatch, but only return True or False to indicate whether the match was successful. These methods should be faster than the full versions, especially for patterns with capturing groups.

Missing Features

  • No substitution methods.
  • No flags.
  • No split, findall, or finditer.
  • No top-level convenience functions like search and match. (Just use compile.)
  • No compile cache. (If you care enough about performance to use RE2, you probably care enough to cache your own patterns.)
  • No lastindex or lastgroup on Match objects.

Current Status

pyre2 has only received basic testing, and I am by no means a Python extension expert, so it is quite possible that it contains bugs. I'd guess the most likely are reference leaks in error cases.

RE2 doesn't build with fPIC, so I had to build it with

make CFLAGS='-fPIC -c -Wall -Wno-sign-compare -O3 -g -I.'

I also had to add it to my compiler search path when building the module with a command like

env CPPFLAGS='-I/path/to/re2' LDFLAGS='-L/path/to/re2/obj' ./ build


You can file bug reports on GitHub, or email the author: David Reiss <>.