This is a comparison of regular expression engines.
Libraries
- ^ formerly called Regex++
- ^ a b one of fuzzy regular expression engines
- ^ included since version 2.13.0
- ^ ICU4J, the Java version, does not support regular expressions
- ^ C++ bindings were developed by Google and became officially part of PCRE in 2006
Languages
Language features
NOTE: An application using a library for regular expression support does not necessarily offer the full set of features of the library, e.g. GNU Grep which uses PCRE does not offer lookahead support, though PCRE does.
Part 1
Language feature comparison (part 1)|
Boost.Regex | Yes | Yes | Yes | Yes | Yes [Note 4] | Yes | Yes | Yes | Yes |
Boost.Xpressive | Yes | Yes | Yes | Yes | Yes [Note 5] | Yes | Yes | Yes | Yes |
CL-PPCRE | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes |
EmEditor | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | No |
FREJ | No [Note 6] | No | Some [Note 6] | Yes | No | No | No | Yes | Yes |
GLib/GRegex | Yes | ? | Yes | ? | No | ? | ? | ? | ? |
GNU Grep | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | ? |
Haskell | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes |
ICU Regex | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes |
Java | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes |
JavaScript (ECMAScript) | Yes | Yes | Yes | Yes | No | Yes | No | Yes | Yes |
JGsoft | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes |
.NET | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes |
---|
OCaml | Yes | Yes | No | No | No | No | No | Yes | No |
OmniOutliner 3.6.2 | Yes | Yes | Yes | No | No | No | No | ? | ? |
PCRE | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Perl | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
PHP | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Python | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes |
Qt/QRegExp | Yes | Yes | Yes | Yes | No | Yes | No | Yes | Yes |
R [Note 7] | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes |
re2 | Yes | Yes | Yes | Yes | No | No | No | No | Yes |
Ruby | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
TRE | Yes | Yes | Yes | Yes | No | No | No | Yes | No |
Vim Patch 7.3.874 (2012-12-06) [±] | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | No |
RGX | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes |
TRegExpr | Yes | ? | Yes | ? | ? | ? | ? | ? | ? |
XRegExp | Yes | Yes | Yes | Yes | No | Yes | No | Yes | Yes |
Part 2
- ^ Also known as Flags modifiers or Option letters. Example pattern: "(?i:test)"
- ^ Also called Independent sub-expressions
- ^ Similar to back references but with names instead of indices
- ^ a b c d e f g Unicode property support may be incomplete (products are continuously updated!). **All will be incomplete** when a new Unicode revision is released *until* they are updated to comply.
- ^ Available as of JDK7.
API features
- ^ a b Means the format can be used internally without explicit conversion
- ^ Supports Unicode 4.0 standard from 2003; latest plans for JDK7 include Unicode 6.0 (2011) support [1]
- ^ Implementation uses original UCS-2 support/features, so it only recognizes 64K chars total (vs UTF-16's 1,112,064 characters). A Microsoft developer-representative answered a bug report on this as "will not fix" in 2010). [2].
- ^ Since version 8.30
See also
External links