सामग्री पर जाएँ

रेग्युलर एक्सप्रेशन इंजिन की तुलना

यहाँ रेग्युलर एक्सप्रेशन के इंजनों की विभिन्न दृष्टियों से तुलना की गयी है।

लाइब्रेरी

रेग्युलर इक्सप्रेशन की लाइब्रेरियों की सूची
नाम वेबसाइट प्रोग्रामन भाषासॉफ्टवेयर लाइसेंसकहाँ प्रयुक्त
Boost.Regex[Note 1]Boost C++ LibrariesC++BoostNotepad++ >= 6.0.0, EmEditor
Boost.Xpressive Boost C++ LibrariesC++ Boost  
CL-PPCREEdi WeitzCommon LispBSD 
cppreJeff StuartC++ GPL 
DEELX RegExLabC++ Free personal and commercial use  
FREJ[Note 2]Fuzzy Regular Expressions for JavaJavaLGPL 
GLib/GRegex[Note 3]GLib reference manualCLGPL  
GRETAMicrosoft ResearchC++ ?  
Helios RXPFTitan ICRTL Proprietaryhardware accelerated regex engine for cybersecurity OEMs  
ICUInternational Components for UnicodeC, C++[Note 4]ICUFoundation (Apple and Swift open-source versions)
Jakarta/Regexp The Apache Jakarta ProjectJava Apache 
java.util.regex Java's User manualJava Proprietary Java licensejEdit
JRegex JRegexJava BSD  
OnigurumaKosakoC BSD Atom, Take Command Console, Tera Term, TextMate, Sublime Text, SubEthaEdit, EmEditor and jq
Pattwo StevesoftJava (compatible with Java 1.0) LGPL  
PCREpcre.orgC, C++[Note 5]BSD Nginx, Julia, HHVM, Notepad++ < 6.0.0, PHP
Qt/QRegExp DigiaC++ Qt GNU GPL v. 3.0,

Qt GNU LGPL v. 2.1, Qt Commercial

Kate, Kile
regex - Henry Spencer's regular expression libraries ArgListC BSD  
RE2RE2C++ BSD  
Henry Spencer's Advanced Regular Expressions TclC BSD  
Hyperscan IntelC, x86-specific assembly (SSSE3+[1]) 3-clause BSD
SubReg Matt BucknallC MIT  
TRE[Note 2]Ville LaurikariC BSD  
TPerlRegEx TPerlRegEx VCL ComponentObject PascalMPLv1.1 
TRegExpr RegExp StudioObject Pascal Dual-license: freeware, or LGPL with static linking exception Total Commander
RGX RGX C++ based component library P6R 
XRegExp XRegExpJavaScript MIT 
Wolfram Language (Mathematica) Wolfram Language Documentation CenterWolfram LanguageMathematica, the Wolfram Development Platform
  1. Formerly called Regex++
  2. One of fuzzy regular expression engines
  3. Included since version 2.13.0
  4. ICU4J, the Java version, does not support regular expressions.
  5. C++ bindings were developed by Google and became officially part of PCRE in 2006.

भाषाएँ

उन प्रोग्रामन भाषाओं की सूची जिनमें रेग्युलर इक्सप्रेसन का उपयोग हुआ है।
भाषा जालस्थल सॉफ्टवेयर लाइसेंसटिप्पणी
.NETMSDNMIT License[Note 1][Note 2]
POSIX C (C) libc/regex from BSDBSD According to regex(3), available from at least 4.4BSD (if not earlier)
C++11 (C++) C++ standards website? Since ISO14822:2011(e)
DDBoost Software License[Note 3]
GoGolang.orgBSD-style
HaskellHaskell.orgBSD3 Omitted in the language report, and in GHC's Hierarchical Libraries
JavaJavaGNU General Public LicenseREs are written as strings in source code: all backslashes must be doubled, harming readability.
JavaScript (ECMAScript) ECMA-262BSD3 Limited but REs are first-class citizens of the language with a specific /.../mod syntax.
JuliaJuliaLang.orgMIT LicenseREs are part of the language core library using PCRE built-in and an optional wrapper for (C code) ICU is available.
LuaLua.orgMIT LicenseUses simplified, limited dialect; can be bound to more powerful library, like PCRE or an alternative parser like LPeg.
MathematicaWolframProprietary
Nimnim-lang.orgMIT LicenseStandard library includes PCRE-based re and nre modules, as well as various alternatives (ex. strutils, pegs (Parsing Expression Grammar matching), strscans, parseutils, etc).
Free Pascal (Object Pascal) www.freepascal.orgLGPL with static linking exception Free Pascal 2.6+ ships with TRegExpr from Sorokin and two other regular expression libraries; See wiki.lazarus.freepascal.org/Regexpr.
OCamlCamlLGPL2010 के अनुसार , the standard module is generally regarded as deprecated;[2] often recommended libraries are pcre (with full support for PCRE) and re (which is not as complete but claims better performance and provides frontends to popular syntaxes: PCRE, Perl, Posix, Emacs, shell globbing).
PerlPerl.comArtistic License, or GNU General Public LicenseFull, central part of the language
PHPPHP.netPHP LicenseHas two implementations, with PCRE being the more efficient in speed, functions
Pythonpython.orgPython Software Foundation LicensePython has two major implementations, the built in re and the regex library.
Rubyruby-doc.orgGNU Library General Public LicenseRuby 1.8 and 1.9 use different engines; 1.9 integrates Oniguruma.
SAP ABAPSAP.comProprietary
Tcltcl.tkTcl/Tk License
(BSD-style)
Tcl library doubles as a regular expression library.
ActionScript 3 ActionScript Technology CenterFree
Wolfram LanguageWolfram ResearchProprietary; usable for free on a limited scale on the Wolfram Development platform.
  1. https://github.com/dotnet/corefx/blob/7116584186f8f3a886616aaf8cb5d4a982c60e27/src/System.Text.RegularExpressions/src/System/Text/RegularExpressions/Regex.cs#L2
  2. "संग्रहीत प्रति". मूल से 3 जुलाई 2018 को पुरालेखित. अभिगमन तिथि 15 जुलाई 2018.
  3. "संग्रहीत प्रति". मूल से 2 अप्रैल 2018 को पुरालेखित. अभिगमन तिथि 15 जुलाई 2018.

भाषाओं के प्रमुख विशेषताएँ

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.

भाग 1

Language feature comparison (part 1)
"+" quantifier Negated character classes Non-greedy quantifiers[Note 1]Shy groups[Note 2]Recursion Look-ahead Look-behind Backreferences[Note 3]>9 indexable captures
Boost.Regexहाँ हाँ हाँ हाँ हाँ[Note 4]हाँ हाँ हाँ हाँ
Boost.Xpressiveहाँ हाँ हाँ हाँ हाँ[Note 5]हाँ हाँ हाँ हाँ
CL-PPCREहाँ हाँ हाँ हाँ नहीं हाँ हाँ हाँ हाँ
EmEditorहाँ हाँ हाँ हाँ नहीं हाँ हाँ हाँ नहीं
FREJ नहीं[Note 6]नहीं Some[Note 6]हाँ नहीं नहीं नहीं हाँ हाँ
GLib/GRegex हाँ हाँ हाँ हाँ हाँ हाँ हाँ हाँ हाँ
GNU grepहाँ हाँ हाँ हाँ नहीं हाँ हाँ हाँ ?
Haskellहाँ हाँ हाँ हाँ नहीं हाँ हाँ हाँ हाँ
Helios RXPFहाँ हाँ हाँ हाँ नहीं नहीं नहीं हाँ हाँ
ICU Regex हाँ हाँ हाँ हाँ नहीं हाँ हाँ हाँ हाँ
Javaहाँ हाँ हाँ हाँ नहीं हाँ हाँ हाँ हाँ
JavaScript (ECMAScript) हाँ हाँ हाँ हाँ नहीं हाँ नहीं हाँ हाँ
JGsoftहाँ हाँ हाँ हाँ नहीं हाँ हाँ हाँ हाँ
Luaहाँ हाँ Some[Note 7]नहीं नहीं नहीं नहीं हाँ नहीं
.NETहाँ हाँ हाँ हाँ नहीं हाँ हाँ हाँ हाँ
OCamlहाँ हाँ नहीं नहीं नहीं नहीं नहीं हाँ नहीं
OmniOutliner 3.6.2 हाँ हाँ हाँ नहीं नहीं नहीं नहीं ? ?
PCREहाँ हाँ हाँ हाँ हाँ हाँ हाँ हाँ हाँ
Perlहाँ हाँ हाँ हाँ हाँ हाँ हाँ हाँ हाँ
PHPहाँ हाँ हाँ हाँ हाँ हाँ हाँ हाँ हाँ
Pythonहाँ हाँ हाँ हाँ हाँ[Note 8]हाँ हाँ हाँ हाँ
Qt/QRegExp हाँ हाँ हाँ हाँ नहीं हाँ नहीं हाँ हाँ
R[Note 9]हाँ हाँ हाँ हाँ नहीं हाँ हाँ हाँ हाँ
RE2हाँ हाँ हाँ हाँ नहीं नहीं नहीं नहीं हाँ
Rubyहाँ हाँ हाँ हाँ हाँ हाँ हाँ हाँ हाँ
TREहाँ हाँ हाँ हाँ नहीं नहीं नहीं हाँ नहीं
Vim साँचा:Latest preview release/Vimहाँ हाँ हाँ हाँ नहीं हाँ हाँ हाँ नहीं
RGX हाँ हाँ हाँ हाँ नहीं हाँ हाँ हाँ हाँ
Tclहाँ हाँ हाँ हाँ नहीं हाँ हाँ हाँ हाँ
TRegExpr हाँ ? हाँ ? ? ? ? ? ?
XRegExp हाँ हाँ हाँ हाँ नहीं हाँ नहीं हाँ हाँ
  1. Non-greedy quantifiers match as few characters as possible, instead of the default as many. Note that many older, pre-POSIX engines were non-greedy and didn't have greedy quantifiers at all.
  2. Shy groups, also called non-capturing groups cannot be referred to with backreferences; non-capturing groups are used to speed up matching where the group's content does not need to be accessed later.
  3. Backreferences enable referring to previously matched groups in later parts of the regex and/or replacement string (where applicable). For instance, ([ab]+)\1 matches "abab" but not "abaab".
  4. "संग्रहीत प्रति". मूल से 25 मार्च 2018 को पुरालेखित. अभिगमन तिथि 15 जुलाई 2018.
  5. "संग्रहीत प्रति". मूल से 16 जुलाई 2017 को पुरालेखित. अभिगमन तिथि 15 जुलाई 2018.
  6. FREJ have no repetitive quantifiers, but have "optional" element which behaves similar to simple "?" quantifier.
  7. Lua's only non-greedy quantifier is -, which is a non-greedy version of *. It does not have non-greedy versions of + or ?; in the former case, the non-greedy effect can be achieved by repeating the token followed by -, but in the latter case, there is no equivalent.
  8. Supported by the optional regex Archived 2018-03-16 at the वेबैक मशीन library only.
  9. "Regular Expressions as used in R". मूल से 4 जुलाई 2018 को पुरालेखित. अभिगमन तिथि 15 जुलाई 2018.

भाग 2

Language feature comparison (part 2)
Directives[Note 1]Conditionals Atomic groups[Note 2]Named capture[Note 3]Comments Embedded code Unicode property support [3]Balancing groups[Note 4]Variable-length look-behinds[Note 5]
Boost.Regexहाँ हाँ हाँ हाँ हाँ नहीं Some[Note 6]नहीं नहीं
Boost.Xpressiveहाँ नहीं हाँ हाँ हाँ नहीं नहीं नहीं नहीं
CL-PPCREहाँ हाँ हाँ हाँ हाँ हाँ Some[Note 6]नहीं नहीं
EmEditorहाँ हाँ ? ? हाँ नहीं ? नहीं नहीं
FREJ नहीं नहीं हाँ हाँ हाँ नहीं ? नहीं नहीं
GLib/GRegex हाँ हाँ हाँ हाँ हाँ नहीं Some[Note 6]नहीं नहीं
GNU grepहाँ हाँ ? हाँ हाँ नहीं नहीं नहीं नहीं
Haskell? ? ? ? ? नहीं नहीं नहीं नहीं
Helios RXPFहाँ हाँ नहीं हाँ हाँ नहीं नहीं नहीं नहीं
ICU Regex हाँ नहीं हाँ हाँ[Note 7]हाँ नहीं हाँ नहीं नहीं
Javaहाँ नहीं हाँ हाँ[Note 8]हाँ नहीं Some[Note 6]नहीं नहीं
JavaScript (ECMAScript) नहीं नहीं नहीं नहीं नहीं नहीं नहीं नहीं नहीं
JGsoftहाँ हाँ हाँ हाँ हाँ नहीं Some[Note 6]नहीं हाँ
Luaनहीं नहीं नहीं नहीं नहीं नहीं नहीं नहीं नहीं
.NETहाँ हाँ हाँ हाँ हाँ नहीं Some[Note 6]हाँ हाँ
OCamlनहीं नहीं नहीं नहीं नहीं नहीं नहीं नहीं नहीं
OmniOutliner 3.6.2 ? ? ? ? नहीं नहीं ? नहीं नहीं
PCREहाँ हाँ हाँ हाँ हाँ हाँ हाँ नहीं नहीं
Perlहाँ हाँ हाँ हाँ हाँ हाँ हाँ नहीं नहीं
PHPहाँ हाँ हाँ हाँ हाँ नहीं नहीं नहीं नहीं
Pythonहाँ हाँ हाँ[Note 9]हाँ हाँ नहीं हाँ[Note 10]नहीं हाँ[Note 9]
Qt/QRegExp नहीं नहीं नहीं नहीं नहीं नहीं नहीं नहीं नहीं
RE2हाँ नहीं ? हाँ नहीं नहीं Some[Note 6]नहीं नहीं
Rubyहाँ हाँ हाँ हाँ हाँ हाँ Some[Note 6]नहीं नहीं
Tclहाँ नहीं हाँ नहीं हाँ नहीं हाँ नहीं नहीं
TREहाँ नहीं नहीं नहीं हाँ नहीं ? नहीं नहीं
Vimहाँ नहीं हाँ नहीं नहीं नहीं नहीं नहीं हाँ
RGX हाँ हाँ हाँ हाँ हाँ नहीं हाँ नहीं नहीं
XRegExp Leading only नहीं नहीं हाँ हाँ नहीं हाँ नहीं नहीं
  1. Also known as Flags modifiers or Option letters. Example pattern: "(?i:test)".
  2. Also called Independent sub-expressions
  3. Similar to back references but with names instead of indices
  4. Special feature allowing to match balanced constructs without recursion
  5. Refers to the possibility of including quantifiers in look-behinds, thus making their length unpredictable
  6. 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.
  7. Available as of ICU55
  8. Available as of JDK7
  9. Supported by the optional regex library only.
  10. May only be available in the regex library when used with Python versions after 3.3

API की विशेषताएँ

API feature comparison
Native UTF-16 support[Note 1]Native UTF-8 support[Note 1]Multi-line matching Partial match[Note 2]
Boost.Regexनहीं नहीं हाँ हाँ
GLib/GRegex हाँ हाँ हाँ हाँ
Helios RXPFहाँ हाँ नहीं हाँ
ICU Regex हाँ नहीं हाँ ?
Javaनहीं आंशिक[Note 3]हाँ हाँ
.NETनहीं[Note 4]हाँ हाँ ?
PCREहाँ[Note 5]हाँ हाँ हाँ
Qt/QRegExp हाँ नहीं नहीं ?
Tclहाँ हाँ[Note 6]हाँ ?
TREनहीं ? हाँ ?
RGX नहीं नहीं हाँ ?
wxWdigets::wxRegEx[Note 7]हाँ हाँ हाँ ?
XRegExp हाँ ? हाँ ?
  1. Means the format can be used internally without explicit conversion.
  2. Partial match of the whole regular expression. For example the pattern ".*END$" will match any string partially, but only strings ending with END fully.[1]
  3. Supports Unicode 4.0 standard from 2003; latest plans for JDK7 include Unicode 6.0 (2011) support.[2]
  4. 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.[3].
  5. Since version 8.30
  6. Tcl includes facilities to convert to and from UTF-8.
  7. wxRegEx uses any system supplied POSIX library or if not available and for Unicode mode uses Henry Spencer's library.

इन्हें भी देखें

सन्दर्ह

  1. "संग्रहीत प्रति". मूल से 4 जुलाई 2018 को पुरालेखित. अभिगमन तिथि 15 जुलाई 2018.
  2. [4]
  3. "संग्रहीत प्रति". मूल से 17 जुलाई 2018 को पुरालेखित. अभिगमन तिथि 15 जुलाई 2018.

बाहरी कड़ियाँ