As of 2010[update], 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).
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.
^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.
^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.
^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".
^ abFREJ have no repetitive quantifiers, but have "optional" element which behaves similar to simple "?" quantifier.
^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.
^Similar to back references but with names instead of indices
^Special feature allowing to match balanced constructs without recursion
^Refers to the possibility of including quantifiers in look-behinds, thus making their length unpredictable
^ abcdefghUnicode 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.
^ abMeans the format can be used internally without explicit conversion.
^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]
^Supports Unicode 4.0 standard from 2003; latest plans for JDK7 include Unicode 6.0 (2011) support.[2]
^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].