Wikipedia:

Comparison of regular expression engines

Overview

Libraries

List of regular expression libraries
Official website Programming language Software license
Boost.Regex Boost C++ Libraries C++ Boost Software License
Boost.Xpressive Boost C++ Libraries C++ Boost Software License
GLib/GRegex Marco Barisione C ?
GRETA Microsoft Research C++ ?
ICU International Components for Unicode C/C++/Java ICU license
Jakarta/Regexp The Apache Jakarta Project Java Apache License
Oniguruma Kosako C BSD
PCRE Philip Hazel C BSD
QT/QRegExp Trolltech C++ ?
TRE Ville Laurikari C LGPL

[^]  formerly called Regex++

^  included since version 2.13.0

Applications

List of applications supporting regular expressions
Official website Programming language Regular expression flavor Software license
EditPad Pro [1] Delphi JGsoft Proprietary
EmEditor [2] ? ? Proprietary
GNU Grep [3] C ? GPL
OmniOutliner 3.6.2 [4] ? ? Proprietary
PowerGREP [5] Delphi JGsoft Proprietary
RegexBuddy [6] Delphi Emulates all popular regex flavors Proprietary
SubEthaEdit [7] ? ? Proprietary
TextMate [8] ? Oniguruma Proprietary
Vim [9] C ? GPL-compatible charityware

Languages

List of languages coming with regular expression support
Official website Software license
Haskell Meurig Sage ?
.NET MSDN ?
Perl Perl.com ?
PHP PHP.net ?
Python python.org ?
Ruby ruby-doc.org ?
Tcl 8.1 tcl.tk ?
D D ?
Java Java ?

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)
"+" quantifier Negated character classes Lazy quantifiers Grouping-only parentheses Lookahead Lookbehind Backreferences >9 indexable captures
Boost.Regex Yes Yes Yes Yes Yes Yes Yes ?
EmEditor Yes Yes Yes Yes Yes Yes Yes No
GLib/GRegex ? ? ? ? ? ? ? ?
GNU Grep Yes Yes No No No No Yes ?
Haskell Yes Yes ? ? ? ? ? ?
ICU Regex Yes Yes Yes Yes Yes Yes Yes Yes
JGsoft Yes Yes Yes Yes Yes Yes Yes Yes
.NET Yes Yes Yes Yes Yes Yes Yes Yes
OmniOutliner 3.6.2 Yes Yes Yes No No No ? ?
PCRE Yes Yes Yes Yes Yes Yes Yes Yes
Perl Yes Yes Yes Yes Yes Yes Yes Yes
PHP Yes Yes Yes Yes Yes Yes Yes Yes
Python Yes Yes Yes Yes Yes Yes Yes Yes
QT/QRegExp Yes Yes Yes Yes Yes No Yes ?
Ruby Yes Yes Yes Yes Yes No Yes Yes
TRE Yes Yes Yes Yes No No Yes ?
Vim Yes Yes Yes Yes Yes Yes Yes Yes
  • ^  only global not local per quantifier

Part 2

Language feature comparison (part 2)
Directives Conditionals Atomic groups Named capture Comments Embedded code Partial matching Fuzzy matching Unicode property support [10]
Boost.Regex Yes Yes ? ? Yes No Yes No Yes
EmEditor ? ? ? ? ? No No No ?
GLib/GRegex ? ? ? ? ? No Yes No Yes
GNU Grep ? ? ? ? ? No ? No No
Haskell ? ? ? ? ? No ? No No
ICU Regex Yes Yes Yes ? Yes No No No Yes
JGsoft Yes Yes Yes Yes Yes No Yes ? Yes
.NET Yes Yes Yes Yes Yes No ? No Yes
OmniOutliner 3.6.2 ? ? ? ? No No ? No ?
PCRE Yes Yes ? Yes Yes No Yes No Yes
Perl Yes Yes Yes Yes Yes Yes No No Yes
PHP Yes Yes ? ? Yes No No No No
Python Yes Yes No Yes Yes No No No Yes
QT/QRegExp No No No No No No No No Yes
Ruby Yes No No No Yes No No No No
TRE No No No No No No No Yes ?
Vim Yes ? Yes ? ? No ? No ?
  • ^  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
  • ^  Available as of PCRE 7.0 (as of PCRE 4.0 with Python-like syntax (?P<name>...))
  • ^  Available as of perl 5.9.5
  • ^  Requires optional Unicode support enabled.

API features

API feature comparison
Native UTF-16 support Native UTF-8 support Non-linear input support Dot-matches-newline option Anchor-matches-newline option
Boost.Regex No No ? ? ?
GLib/GRegex No Yes No Yes Yes
ICU Regex Yes No No Yes ?
.NET Yes No Yes Yes ?
PCRE No Yes No Yes Yes
QT/QRegExp Yes No No No No
TRE No ? Yes Yes Yes
  • ^  Native support means that conversion between UTF-16 <-> UTF-8 isn't required, the Unicode properties are supported, and the encoding type is always available (platform dependent wchar_t doesn't count).

External links


 
 
 

Join the WikiAnswers Q&A community. Post a question or answer questions about "Comparison of regular expression engines" at WikiAnswers.

 

Copyrights:

Wikipedia. This article is licensed under the GNU Free Documentation License. It uses material from the Wikipedia article "Comparison of regular expression engines" Read more

Search for answers directly from your browser with the FREE Answers.com Toolbar!  
Click here to download now. 

Get Answers your way! Check out all our free tools and products.

On this page:   E-mail   print Print  Link  

 

Keep Reading

Mentioned In: