Jämförelse av reguljära uttrycksmotorer
Detta är en jämförelse av motorer för reguljära uttryck .
Bibliotek
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 , | Kate , Kile |
regex - Henry Spencers bibliotek med reguljära uttryck | ArgList | C | BSD | |
RE2 | RE2 | C++ | BSD | Gå , 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
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 . |
Gå | 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
"+" 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
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
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
- Regular Expression Flavor Comparison — Detaljerad jämförelse av de mest populära reguljära uttryckssmakerna
- Regexp Syntax Sammanfattning
- Testning av reguljära uttryck online — med stöd för Java, JavaScript, .Net, PHP, Python och Ruby
- Implementering av reguljära uttryck — serie artiklar av Russ Cox, författare till RE2
- Reguljära uttrycksmotorer
Kategorier: