Jämförelse av reguljära uttrycksmotorer

Detta är en jämförelse av motorer för reguljära uttryck .

Bibliotek

Lista över reguljära uttrycksbibliotek
namn Officiell hemsida Programmeringsspråk Mjukvarulicens Använd av
Boost .Regex Boosta C++-bibliotek C++ Lyft Notepad++ >= 6.0.0, EmEditor
Boost.Xpressive Boosta C++-bibliotek C++ Lyft  
DEELX RegExLab C++ Proprietär  
FREJ Fuzzy Regular Expressions för Java Java LGPL  
GLib /GRegex GLib referensmanual C LGPL  
GRETA Microsoft Research C++ Proprietär  
Gregex Grovf Inc. RTL, HLS Proprietär FPGA-accelererad >100 Gbit/s regex-motor för cybersäkerhet, finans, e-handel.
Hyperscan Intel C, x86 -specifik montering ( SSSE3 +) 3-klausul BSD Rspamd
ICU Internationella komponenter för Unicode C, C++ ICU Foundation (Apple och Swift versioner med öppen källkod)
Jakarta Regexp Apache Jakarta-projektet Java Apache  
java.util.regex Javas användarmanual Java GNU GPLv2 med undantag för Classpath jRedigera
JRegex JRegex Java BSD  
MATLAB Vanliga uttryck MATLAB Språk Proprietär  
Oniguruma Kosako C BSD Atom , Take Command Console , Tera Term , TextMate , Sublime Text , SubEthaEdit , EmEditor och jq
Pattwo Stevesoft Java (kompatibel med Java 1.0) LGPL  
PCRE pcre.org C, C++ BSD Apache HTTP Server , Nginx , BBEdit , Edbrowse, Julia , HHVM , Notepad++ < 6.0.0, PHP , Delphi , R , Exim SWI-Prolog
Qt /QRegExp Digia C++ Qt GNU GPL v. 3.0 ,

Qt GNU LGPL v. 2.1 , Qt Commercial

Kate , Kile
regex - Henry Spencers bibliotek med reguljära uttryck ArgList C BSD  
RE2 RE2 C++ BSD , Google Kalkylark, Gmail, G Suite
Henry Spencers avancerade reguljära uttryck Tcl C BSD  
RGX RGX C++-baserat komponentbibliotek P6R  
RXP Titan IC RTL Proprietär hårdvaruaccelererad sökacceleration med RegEx tillgängligt för ASIC, FPGA och moln. Möjliggör massivt parallell innehållsbearbetning vid ultrahöga hastigheter.
SubReg Matt Bucknall C MIT  
TPerlRegEx TPerlRegEx VCL-komponent Objekt Pascal MPLv1.1  
TRE Ville Laurikari C BSD musl
TRegExpr RegExp Studio Objekt Pascal Dubbellicens: gratisprogram eller LGPL med undantag för statisk länkning Total befälhavare
Wolfram Language ( Mathematica ) Wolfram Language Documentation Center Wolfram språk Proprietär Mathematica , Wolfram Development Platform
XRegExp XRegExp JavaScript MIT  

språk

Lista över språk och ramverk inklusive stöd för reguljära uttryck
Språk Officiell hemsida Mjukvarulicens Anmärkningar
ActionScript 3 ActionScript Technology Center Fri
APL ( APLX , Dyalog, GNU) APL Wiki Licensierad av respektive implementering ⎕SS (PCRE), ⎕R / ⎕S (PCRE), ⎕SS (PCRE2), respektive
C++11 ( C++ ) C++ standardwebbplats Licensierad av respektive implementering Sedan ISO14822:2011(e), liknande ECMAScript på standard (Grammarbeskrivning)
D D Boost-programvarulicens
Gratis Pascal ( Object Pascal ) freepascal.org LGPL med statisk länkning undantag Free Pascal 2.6+ levereras med TRegExpr från Sorokin och två andra reguljära uttrycksbibliotek; Se wiki.lazarus.freepascal.org/Regexpr .
Golang.org BSD-stil
Haskell Haskell.org BSD3 Utelämnad i språkrapporten och i GHC:s hierarkiska bibliotek
Java Java GNU General Public License RE:er skrivs som strängar i källkoden: alla omvända snedstreck måste dubblas, vilket skadar läsbarheten.
JavaScript ( ECMAScript ) ECMA-262 BSD3 Begränsade men RE är förstklassiga medborgare i språket med en specifik /.../mod-syntax .
Julia JuliaLang.org MIT-licens RE är en del av språkets kärnbibliotek med PCRE inbyggd och en valfri omslag för (C-kod) ICU är tillgänglig.
Lua Lua.org MIT-licens Använder förenklad, begränsad dialekt; kan bindas till mer kraftfulla bibliotek, som PCRE eller en alternativ parser som LPeg.
Mathematica Volfram Proprietär
.NETTO MSDN MIT-licens
Nim nim-lang.org MIT-licens Standardbiblioteket innehåller PCRE-baserade re- och nre -moduler, såväl som olika alternativ (ex. strutils , pegs ( Parsing Expression Grammar matching ), strscans , parseutils , etc.).
Ocaml Caml LGPL Från och med 2010 anses standardmodulen i allmänhet vara utfasad; ofta rekommenderade bibliotek är pcre (med fullt stöd för PCRE) och re (som inte är lika komplett men hävdar bättre prestanda och ger gränssnitt till populära syntaxer: PCRE, Perl, Posix, Emacs, skalglobing).
Perl Perl.com Artistic License , eller GNU General Public License Hela, centrala delen av språket
PHP PHP.net PHP-licens Har två implementeringar, där PCRE är de mer effektiva i hastighet, funktioner
POSIX C ( C ) POSIX.1 webbpublikation Licensierad av respektive implementering Stöder syntax för POSIX BRE och ERE
Pytonorm python.org Python Software Foundation-licens Python har två stora implementeringar, den inbyggda re och regex -biblioteket.
Rubin ruby-doc.org GNU Library General Public License Ruby 1.8, Ruby 1.9 och Ruby 2.0 och senare versioner använder olika motorer; Ruby 1.9 integrerar Oniguruma, Ruby 2.0 och senare integrerar Onigmo, en gaffel från Oniguruma.
Rost docs.rs MIT-licens Den primära regex- lådan tillåter inte look-around-uttryck. Det finns en Oniguruma-bindning som heter onig som gör det.
SAP ABAP SAP.com Proprietär
Tcl tcl.tk
Tcl/Tk-licens (BSD-stil)
Tcl-bibliotek fungerar som ett bibliotek med reguljära uttryck.
Wolfram språk Wolfram Research Proprietär : kan användas gratis i begränsad skala på Wolfram Development-plattformen
XML-schema W3C Licensierad av respektive implementering
XPath 3 / XQuery W3C Licensierad av respektive implementering

Språkfunktioner

OBS: En applikation som använder ett bibliotek för stöd för reguljära uttryck erbjuder inte nödvändigtvis hela uppsättningen av funktioner i biblioteket, t.ex. GNU grep som använder PCRE erbjuder inte lookahead-stöd, även om PCRE gör det.

Del 1

Jämförelse av språkfunktioner (del 1)
"+" kvantifierare Negerade karaktärsklasser Icke giriga kvantifierare
Blyga grupper
Rekursion Se framåt Kolla bakom Bakåtreferenser
>9 indexerbara fångar
Boost.Regex Ja Ja Ja Ja Ja Ja Ja Ja Ja
Boost.Xpressive Ja Ja Ja Ja Ja Ja Ja Ja Ja
CL-PPCRE Ja Ja Ja Ja Nej Ja Ja Ja Ja
EmEditor Ja Ja Ja Ja Nej Ja Ja Ja Nej
FREJ Nej Nej Några Ja Nej Nej Nej Ja Ja
GLib /GRegex Ja Ja Ja Ja Ja Ja Ja Ja Ja
GNU grep Ja Ja Ja Ja Nej Ja Ja Ja
Haskell Ja Ja Ja Ja Nej Ja Ja Ja Ja
RXP Ja Ja Ja Ja Nej Nej Nej Ja Ja
ICU Regex Ja Ja Ja Ja Nej Ja Ja Ja Ja
Java Ja Ja Ja Ja Nej Ja Ja Ja Ja
JavaScript ( ECMAScript ) Ja Ja Ja Ja Nej Ja Ja Ja Ja
JGsoft Ja Ja Ja Ja Nej Ja Ja Ja Ja
Lua Ja Ja Några Nej Nej Nej Nej Ja Nej
.NETTO Ja Ja Ja Ja Nej Ja Ja Ja Ja
OCaml Ja Ja Nej Nej Nej Nej Nej Ja Nej
PCRE Ja Ja Ja Ja Ja Ja Ja Ja Ja
Perl Ja Ja Ja Ja Ja Ja Ja Ja Ja
PHP Ja Ja Ja Ja Ja Ja Ja Ja Ja
Pytonorm Ja Ja Ja Ja Ja Ja Ja Ja Ja
Qt /QRegExp Ja Ja Ja Ja Nej Ja Nej Ja Ja
RE2 Ja Ja Ja Ja Nej Nej Nej Nej Ja
Ruby / Onigmo Ja Ja Ja Ja Ja Ja Ja Ja Ja
TRE Ja Ja Ja Ja Nej Nej Nej Ja Nej
Vim Ja Ja Ja Ja Nej Ja Ja Ja Nej
RGX Ja Ja Ja Ja Nej Ja Ja Ja Ja
Tcl Ja Ja Ja Ja Nej Ja Ja Ja Ja
TRegExpr Ja ? Ja ? ? ? ? ? ?
XML-schema Ja Ja Nej Nej Nej Nej Nej
XPath 3 / XQuery Ja Ja Ja Ja Nej Nej Nej Ja Ja
XRegExp Ja Ja Ja Ja Nej Ja Ja Ja Ja

Del 2

Jämförelse av språkfunktioner (del 2)
direktiv
Villkor Atomgrupper
Namngiven fångst
Kommentarer Inbäddad kod Unicode- egenskapsstöd Balanserande grupper
Variabel längd look-behind
Boost.Regex Ja Ja Ja Ja Ja Nej Några Nej Nej
Boost.Xpressive Ja Nej Ja Ja Ja Nej Nej Nej Nej
CL-PPCRE Ja Ja Ja Ja Ja Ja Några Nej Nej
EmEditor Ja Ja ? ? Ja Nej ? Nej Nej
FREJ Nej Nej Ja Ja Ja Nej ? Nej Nej
GLib /GRegex Ja Ja Ja Ja Ja Nej Några Nej Nej
GNU grep Ja Ja ? Ja Ja Nej Nej Nej Nej
Haskell ? ? ? ? ? Nej Nej Nej Nej
RXP Ja Ja Nej Ja Ja Nej Nej Nej Nej
ICU Regex Ja Nej Ja Ja Ja Nej Ja Nej Nej
Java Ja Nej Ja Ja Ja Nej Några Nej Nej
JavaScript ( ECMAScript ) Nej Nej Nej Ja Nej Nej Några Nej Ja
JGsoft Ja Ja Ja Ja Ja Nej Några Nej Ja
Lua Nej Nej Nej Nej Nej Nej Nej Nej Nej
.NETTO Ja Ja Ja Ja Ja Nej Några Ja Ja
OCaml Nej Nej Nej Nej Nej Nej Nej Nej Nej
PCRE Ja Ja Ja Ja Ja Ja Ja Nej Nej
Perl Ja Ja Ja Ja Ja Ja Ja Nej Nej
PHP Ja Ja Ja Ja Ja Nej Nej Nej Nej
Pytonorm Ja Ja Ja Ja Ja Nej Ja Nej Ja
Qt /QRegExp Nej Nej Nej Nej Nej Nej Nej Nej Nej
RE2 Ja Nej ? Ja Nej Nej Några Nej Nej
Ruby / Onigmo Ja Ja Ja Ja Ja Nej Några Nej Nej
Tcl Ja Nej Ja Nej Ja Nej Ja Nej Nej
TRE Ja Nej Nej Nej Ja Nej ? Nej Nej
Vim Ja Nej Ja Nej Nej Nej Nej Nej Ja
RGX Ja Ja Ja Ja Ja Nej Ja Nej Nej
XML-schema Nej Nej Nej Nej Nej Nej Ja Nej Nej
XPath 3 / XQuery Nej Nej Nej Nej Nej Nej Ja Nej Nej
XRegExp Endast ledande Nej Nej Ja Ja Nej Ja Nej Ja

API-funktioner

Jämförelse av API-funktioner
Inbyggt UTF-16- stöd Native UTF-8- stöd Multi-line matchning Delvis matchning
Boost.Regex Nej Nej Ja Ja
GLib /GRegex Ja Ja Ja Ja
RXP Ja Ja Nej Ja
ICU Regex Ja Nej Ja ?
Java Nej Partiell Ja Ja
.NETTO Nej Ja Ja ?
PCRE Ja Ja Ja Ja
Qt /QRegExp Ja Nej Nej ?
Tcl Ja Ja Ja ?
TRE Ja Ja Ja ?
RGX Nej Nej Ja ?
wxWidgets :: wxRegEx Ja Ja Ja ?
XRegExp Ja Ja Ja Nej

Se även

externa länkar