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

विकिमीडिया सूची लेख

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

लाइब्रेरी

संपादित करें
रेग्युलर इक्सप्रेशन की लाइब्रेरियों की सूची
नाम वेबसाइट प्रोग्रामन भाषा सॉफ्टवेयर लाइसेंस कहाँ प्रयुक्त
Boost.Regex[Note 1] Boost C++ Libraries C++ Boost Notepad++ >= 6.0.0, EmEditor
Boost.Xpressive Boost C++ Libraries C++ Boost  
CL-PPCRE Edi Weitz Common Lisp BSD  
cppre Jeff Stuart C++ GPL  
DEELX RegExLab C++ Free personal and commercial use  
FREJ[Note 2] Fuzzy Regular Expressions for Java Java LGPL  
GLib/GRegex[Note 3] GLib reference manual C LGPL  
GRETA Microsoft Research C++ ?  
Helios RXPF Titan IC RTL Proprietary hardware accelerated regex engine for cybersecurity OEMs  
ICU International Components for Unicode C, C++[Note 4] ICU Foundation (Apple and Swift open-source versions)
Jakarta/Regexp The Apache Jakarta Project Java Apache  
java.util.regex Java's User manual Java Proprietary Java license jEdit
JRegex JRegex Java BSD  
Oniguruma Kosako C BSD Atom, Take Command Console, Tera Term, TextMate, Sublime Text, SubEthaEdit, EmEditor and jq
Pattwo Stevesoft Java (compatible with Java 1.0) LGPL  
PCRE pcre.org C, C++[Note 5] BSD Nginx, Julia, HHVM, Notepad++ < 6.0.0, PHP
Qt/QRegExp Digia C++ Qt GNU GPL v. 3.0,

Qt GNU LGPL v. 2.1, Qt Commercial

Kate, Kile
regex - Henry Spencer's regular expression libraries ArgList C BSD  
RE2 RE2 C++ BSD  
Henry Spencer's Advanced Regular Expressions Tcl C BSD  
Hyperscan Intel C, x86-specific assembly (SSSE3+[1]) 3-clause BSD
SubReg Matt Bucknall C MIT  
TRE[Note 2] Ville Laurikari C BSD  
TPerlRegEx TPerlRegEx VCL Component Object Pascal MPLv1.1  
TRegExpr RegExp Studio Object Pascal Dual-license: freeware, or LGPL with static linking exception Total Commander
RGX RGX C++ based component library P6R  
XRegExp XRegExp JavaScript MIT  
Wolfram Language (Mathematica) Wolfram Language Documentation Center Wolfram Language Mathematica, 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.
उन प्रोग्रामन भाषाओं की सूची जिनमें रेग्युलर इक्सप्रेसन का उपयोग हुआ है।
भाषा जालस्थल सॉफ्टवेयर लाइसेंस टिप्पणी
.NET MSDN MIT License[Note 1][Note 2]
POSIX C (C) libc/regex from BSD BSD According to regex(3), available from at least 4.4BSD (if not earlier)
C++11 (C++) C++ standards website ? Since ISO14822:2011(e)
D D Boost Software License[Note 3]
Go Golang.org BSD-style
Haskell Haskell.org BSD3 Omitted in the language report, and in GHC's Hierarchical Libraries
Java Java GNU General Public License REs are written as strings in source code: all backslashes must be doubled, harming readability.
JavaScript (ECMAScript) ECMA-262 BSD3 Limited but REs are first-class citizens of the language with a specific /.../mod syntax.
Julia JuliaLang.org MIT License REs are part of the language core library using PCRE built-in and an optional wrapper for (C code) ICU is available.
Lua Lua.org MIT License Uses simplified, limited dialect; can be bound to more powerful library, like PCRE or an alternative parser like LPeg.
Mathematica Wolfram Proprietary
Nim nim-lang.org MIT License Standard 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.org LGPL 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.
OCaml Caml LGPL 2010 के अनुसार , 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).
Perl Perl.com Artistic License, or GNU General Public License Full, central part of the language
PHP PHP.net PHP License Has two implementations, with PCRE being the more efficient in speed, functions
Python python.org Python Software Foundation License Python has two major implementations, the built in re and the regex library.
Ruby ruby-doc.org GNU Library General Public License Ruby 1.8 and 1.9 use different engines; 1.9 integrates Oniguruma.
SAP ABAP SAP.com Proprietary
Tcl tcl.tk Tcl/Tk License
(BSD-style)
Tcl library doubles as a regular expression library.
ActionScript 3 ActionScript Technology Center Free
Wolfram Language Wolfram Research Proprietary; 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.

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.
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.

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

संपादित करें