|Type||Pattern matching library|
RE2 is a software library for regular expressions via a finite-state machine using automata theory, in contrast to almost all other regular expression libraries which use backtracking implementations. It provides a C++ interface.
RE2 is used at Google internally.
Comparison to PCRE
"RE2" compares to Perl Compatible Regular Expressions (PCRE) in performance, but greatly exceeds PCRE for regular expression operators like
RE2 does not support back-references which cannot be implemented efficiently. It is also a little slower than PCRE for capturing parenthesis, but is much faster for matching in general.
PCRE can use a large recursive stack and have exponential runtime on certain patterns. RE2 uses a fixed stack and guarantees that run-time increases linearly (not exponentially) with the size of the input. The maximum memory allocated with RE2 can be configured if you have good knowledge of the workings of its code.
Google's RE2 has a slightly smaller set of features than PCRE, but has very predictable run-time and a maximum memory allotment. Making it suitable for use in server applications which require precise boundaries on memory usage and computational time. PCRE on the other hand, has almost all of the features that a regular expression library can have. But PCRE's run-time and memory usage is not predictable and can grow unbounded.
A port to Windows is available. The port aims to change as little code as possible from the original project and compiles with Microsoft C++ Compilers. As of January 2012[update], it produces many compiler warnings due to what the compiler terms use of obsolete functions, which Linux still considers current.
- "re2win: an efficient, principled regular expression library (Windows port)". Google Project Hosting. Google. Retrieved 2012-05-10.