瀏覽代碼

add help RTF fomat

evan 7 年之前
父節點
當前提交
212bed1806
共有 2 個文件被更改,包括 1333 次插入0 次删除
  1. 1333 0
      PERLREGEX.RTF
  2. 二進制
      bm0.BMP

+ 1333 - 0
PERLREGEX.RTF

@@ -0,0 +1,1333 @@
+{\rtf1\ansi\deff0
+{\fonttbl{\f0\fswiss Arial;}{\f1\fswiss Courier New;}{\f2\fswiss Symbol;}}
+{\colortbl;\red0\green0\blue255;\red0\green0\blue0;\red0\green128\blue0;\red128\green0\blue0;}
+{\stylesheet{\fs32 \snext0 Normal;}
+}\pard\plain
+\pard \b\fs32\cf1\cb2 PerlRegEx unit
+\par \plain\fs16\cf2\cb2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3\cb2 \fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 TPerlRegEx is a Delphi VCL wrapper around the open source PCRE library, which implements Perl-Compatible Regular Expressions.
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 This version of TPerlRegEx is compatible with the TPerlRegEx class in the RegularExpressionsCore unit in Delphi XE.  In fact, the unit in Delphi XE is derived from the version of TPerlRegEx that you are using now.
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 The supplied pcrelib.dll contains PCRE 7.9, compiled with Unicode support.  The supplied OBJ files contain PCRE 7.9, compiled with Unicode support.  By default, the OBJ files are used.  You can use the DLL if you have multiple applications using TPerlRegEx and you don't want to waste space by linking the OBJ files to be linked into each of those applications.
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 For more information about PCRE, please visit \uldb \f1\cf1 http://www.regular-expressions.info/pcre.html\plain\f1\ul\fs20\cf1\cb2 \plain\fs20\cf2\cb2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 For more information about regular expressions in general, please visit \uldb \f1\cf1 http://www.regular-expressions.info/\plain\f1\ul\fs20\cf1\cb2 \plain\f1\fs20\cf4\cb2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2\cb2 You can download the latest version of TPerlRegEx at \uldb \f1\cf1 http://www.regular-expressions.info/delphi.html\plain\f1\ul\fs20\cf1\cb2 \plain\fs20\cf2\cb2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 TPerlRegEx is licensed under the Mozilla Public License, version 1.1.
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 This help file only describes the TPerlRegEx class itself.
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Classes
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3\cb2 TPerlRegEx\plain\fs20\cf3\cb2 \cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \cf3 TPerlRegExList\plain\fs20\cf3\cb2 \cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Types
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3\cb2 TPerlRegExOptions\plain\fs20\cf3\cb2 \cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \cf3 TPerlRegExReplaceEvent\plain\fs20\cf3\cb2 \cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \cf3 TPerlRegExState\plain\fs20\cf3\cb2 \cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Constants
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3\cb2 MAX_GroupS\plain\fs20\cf3\cb2 \cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \par
+\pard \plain\b\fs20\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 TPerlRegEx class\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\fs32\cf1 TPerlRegEx class
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 Properties\plain\fs16\cf3 \cf4 \tab \ul \ul\cf3 Methods\plain\fs16\cf3 \cf4 \tab \ul \ul\cf3 Events\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Unit
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 PerlRegEx\plain\fs20\cf3 \cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 The TPerlRegEx class aimes at providing any Delphi or C++Builder developer with the same, powerful regular expression capabilities provided by the Perl programming language, created by Larry Wall.  It is implemented as a \uldb \cf3 wrapper around the open source PCRE library\plain\fs20\cf3 \cf2 .
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Note that this help file assumes that you know what regular expressions are and what you can do with them.  If you don't, you can find a very detailed tutorial about regular expressions at \uldb \f1\cf1 http://www.regular-expressions.info/\plain\f1\ul\fs20\cf1 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Tasks\plain\fs20\cf2 
+\par \pard\li195\fi-195\tx195 \f2\fs18 \'b7\tab \plain\fs20\cf2 Declasre a variable of type TPerlRegEx and call its constructor.
+\par \f2\fs18 \'b7\tab \plain\fs20\cf2 Set the \uldb \cf3 Options property\plain\fs20\cf3 \cf2 
+\par \f2\fs18 \'b7\tab \plain\fs20\cf2 Assign a regular expression to the \uldb \cf3 RegEx property\plain\fs20\cf3 \cf2  if you did not do so at design time.
+\par \f2\fs18 \'b7\tab \plain\fs20\cf2 If you want to do replacements, attach an \uldb \cf3 OnReplace event handler\plain\fs20\cf3 \cf2  or put a string in the \uldb \cf3 Replacement property\plain\fs20\cf3 \cf2 
+\par \f2\fs18 \'b7\tab \plain\fs20\cf2 Assign a string to the \uldb \cf3 Subject property\plain\fs20\cf3 \cf2 
+\par \f2\fs18 \'b7\tab \plain\fs20\cf2 Call the \uldb \cf3 Match method\plain\fs20\cf3 \cf2 
+\par \pard\li195\fi-195\tx195 \f2\fs18 \'b7\tab \plain\fs20\cf2 If you assigned an \uldb \cf3 OnReplace event handler\plain\fs20\cf3 \cf2  or the \uldb \cf3 Replacement property\plain\fs20\cf3 \cf2  and Match returned true, call the \uldb \cf3 Replace method\plain\fs20\cf3 \cf2 
+\par \f2\fs18 \'b7\tab \plain\fs20\cf2 Call the \uldb \cf3 MatchAgain\plain\fs20\cf3 \cf2  method if Match returned true and you want to continue searching
+\par \f2\fs18 \'b7\tab \plain\fs20\cf2 Instead of calling \uldb \cf3 Match\plain\fs20\cf3 \cf2 , \uldb \cf3 MatchAgain\plain\fs20\cf3 \cf2  and \uldb \cf3 Replace\plain\fs20\cf3 \cf2 , call the \uldb \cf3 ReplaceAll method\plain\fs20\cf3 \cf2  to do a global substitution in the Subject string, like Perl's s///g operator.
+\par \par
+\pard \b\cf1 Properties
+\par \plain\fs20\cf2 
+\par \pard\tx195\tx635 \uldb \cf3 Compiled\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 FoundMatch\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Match\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 MatchLength\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 MatchOffset\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Options\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 RegEx\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Replacement\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Start\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 State\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Stop\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Studied\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 GroupCount\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 GroupLengths\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 GroupOffsets\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Groups\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Subject\plain\fs20\cf3 \cf2 
+\par 
+\par \par
+\pard \b\cf1 Methods
+\par \plain\fs20\cf2 
+\par \pard\tx195\tx635 \tab \cf4 {\field {\*\fldinst import bm0.BMP}}\tab \uldb \cf3 Compile\plain\fs20\cf3 \cf2 
+\par \tab \cf4 {\field {\*\fldinst import bm0.BMP}}\tab \uldb \cf3 ComputeReplacement\plain\fs20\cf3 \cf2 
+\par \tab \cf4 {\field {\*\fldinst import bm0.BMP}}\tab \uldb \cf3 EscapeRegExChars\plain\fs20\cf3 \cf2 
+\par \tab \cf4 {\field {\*\fldinst import bm0.BMP}}\tab \uldb \cf3 Match\plain\fs20\cf3 \cf2 
+\par \tab \cf4 {\field {\*\fldinst import bm0.BMP}}\tab \uldb \cf3 MatchAgain\plain\fs20\cf3 \cf2 
+\par \tab \cf4 {\field {\*\fldinst import bm0.BMP}}\tab \uldb \cf3 NamedGroup\plain\fs20\cf3 \cf2 
+\par \tab \cf4 {\field {\*\fldinst import bm0.BMP}}\tab \uldb \cf3 Replace\plain\fs20\cf3 \cf2 
+\par \tab \cf4 {\field {\*\fldinst import bm0.BMP}}\tab \uldb \cf3 ReplaceAll\plain\fs20\cf3 \cf2 
+\par \tab \cf4 {\field {\*\fldinst import bm0.BMP}}\tab \uldb \cf3 Split method\plain\fs20\cf3 \cf2 
+\par \tab \cf4 {\field {\*\fldinst import bm0.BMP}}\tab \uldb \cf3 StoreGroups\plain\fs20\cf3 \cf2 
+\par \tab \cf4 {\field {\*\fldinst import bm0.BMP}}\tab \uldb \cf3 Study\plain\fs20\cf3 \cf2 
+\par \pard\tx195\tx635 
+\par \par
+\pard \b\cf1 Events
+\par \plain\fs20\cf2 
+\par \pard\tx195\tx635 \tab \cf4 {\field {\*\fldinst import bm0.BMP}}\tab \uldb \cf3 OnMatch\plain\fs20\cf3 \cf2 
+\par \tab \cf4 {\field {\*\fldinst import bm0.BMP}}\tab \uldb \cf3 OnReplace\plain\fs20\cf3 \cf2 
+\par 
+\par \par
+\pard \b\fs32\cf1 Compiled property
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2  Compiled: Boolean;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 True if the \uldb \cf3 RegEx\plain\fs20\cf3 \cf2  has already been compiled by calling \uldb \cf3 Compile\plain\fs20\cf3 \cf2 .
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Read-only.
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 Compile method\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\fs32\cf1 FoundMatch property
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2  FoundMatch: Boolean;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 Returns True when \uldb \cf3 Match\plain\fs20\cf3 \cf2  and \uldb \cf3 Groups\plain\fs20\cf3 \cf2  indicate a match.
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Read-only.
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 Match property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Groups property\plain\fs20\cf3 \cf4 
+\par \strike\cf3 
+\par \uldb \plain\uldb\fs20\cf3 Match method\plain\fs20\cf3 \cf4 
+\par \uldb \cf3 MatchAgain method\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\fs32\cf1 Match property
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \cf4 \tab \uldb \cf3 Example\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2  Match: \b string\plain\f1\fs20\cf2 ;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 The substring matched by the regular expression since the last call to the \uldb \cf3 Match method\plain\fs20\cf3 \cf2  or the \uldb \cf3 MatchAgain method\plain\fs20\cf3 \cf2 .
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Read-only.
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 FoundMatch property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 MatchLength property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 MatchOffset property\plain\fs20\cf3 \cf4 
+\par \uldb \cf3 Groups property\plain\fs20\cf3 \cf4 
+\par \cf2 
+\par \uldb \cf3 Subject property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Match method\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 MatchAgain method\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\cf1 Match property example
+\par \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 This example assumes you placed a TLabel and a TPerlRegEx on a form, and that PerlRegEx.Subject is set to a meaningful test string.
+\par 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\b with\plain\f1\fs20\cf2  PerlRegEx1 \b do\plain\f1\fs20\cf2  \b begin\plain\f1\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635   RegEx := 'Windows|Linux';  \i // Matches 'Windows' or 'Linux', whichever comes first\plain\f1\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635   \b if\plain\f1\fs20\cf2  Match \b then\plain\f1\fs20\cf2  Label1.Caption := Match + ' rulez!';
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b end\plain\f1\fs20\cf2 ;\plain\fs20\cf2 
+\par \par
+\pard \b\fs32\cf1 MatchLength property
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \cf4 \tab \uldb \cf3 Example\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2  MatchLength: Integer;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 Length of the substring matched by the regular expression since the last call to \uldb \cf3 Match method\plain\fs20\cf3 \cf2  or \uldb \cf3 MatchAgain method\plain\fs20\cf3 \cf2 .  This is a shortcut to \f1 Length(Match)\plain\fs20\cf2  and will execute much faster.
+\par Read-only.
+\par 
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 FoundMatch property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Match property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 MatchOffset property\plain\fs20\cf3 \cf4 
+\par \uldb \cf3 Groups property\plain\fs20\cf3 \cf4 
+\par \uldb \cf3 GroupLengths property\plain\fs20\cf3 \cf4 
+\par \cf2 
+\par \uldb \cf3 Subject property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Match method\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 MatchAgain method\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\cf1 MatchLength property example
+\par \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 This example assumes you placed a TLabel and a TPerlRegEx on a form.
+\par 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\b with\plain\f1\fs20\cf2  PerlRegEx1 \b do\plain\f1\fs20\cf2  \b begin\plain\f1\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635   Subject := 'Rating: AAA';
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635   RegEx := 'A+';  \i // Matches the first occurence of 'A', including any A's that may follow right after it\plain\f1\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635   \b if\plain\f1\fs20\cf2  Match \b then\plain\f1\fs20\cf2  Label1.Caption := 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635     'You have been rated with ' + IntToStr(MatchLength) + 'A''s'
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635   \b else\plain\f1\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635     Label1.Caption := 'You have a poor rating';
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b end\plain\f1\fs20\cf2 ;\plain\fs20\cf2 
+\par \par
+\pard \b\fs32\cf1 MatchOffset property
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \cf4 \tab \uldb \cf3 Example\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2  MatchOffset: Integer;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 Character offset in the \uldb \cf3 Subject string\plain\fs20\cf3 \cf2  at which the \uldb \cf3 matched substring\plain\fs20\cf3 \cf2  starts.
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Read-only.
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 FoundMatch property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Match property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 MatchLength property\plain\fs20\cf3 \strike 
+\par \uldb \plain\uldb\fs20\cf3 Groups property\plain\fs20\cf3 \cf4 
+\par \uldb \cf3 GroupOffsets property\plain\fs20\cf3 \cf4 
+\par \cf2 
+\par \uldb \cf3 Subject property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Match method\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 MatchAgain method\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\cf1 MatchOffset property example
+\par \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 This example assumes you placed a TLabel and a TPerlRegEx on a form, and that PerlRegEx.Subject is set to a meaningful test string.
+\par 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\b with\plain\f1\fs20\cf2  PerlRegEx1 \b do\plain\f1\fs20\cf2  \b begin\plain\f1\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635   RegEx := 'Bye';
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635   \b if\plain\f1\fs20\cf2  Match \b then\plain\f1\fs20\cf2  Label1.Caption := 'Before typing "Bye", you typed: ' +
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635     Copy(Subject, 1, MatchOffset-1);
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b end\plain\f1\fs20\cf2 ;\plain\fs20\cf2 
+\par \par
+\pard \b\fs32\cf1 Options property
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2  Options: TPerlRegExOptions;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \plain\fs20\cf2 These are the most important options you can specify:
+\par 
+\par \pard\li1415\fi-1415\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b preCaseLess\plain\fs20\cf2 \tab Tries to match the regex without paying attention to case.  If set, 'Bye' will match 'Bye', 'bye', 'BYE' and even 'byE', 'bYe', etc.  Otherwise, only 'Bye' will be matched.  Equivalent to Perl's /i modifier.
+\par \b preMultiLine\plain\fs20\cf2 \tab The ^ (beginning of string) and $ (ending of string) regex operaters will also match right after and right before a newline in the Subject string.  This effectively treats one string with multiple lines as multiple strings.  Equivalent to Perl's /m modifier.
+\par \pard\li1415\fi-1415\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b preSingleLine\plain\fs20\cf2  Normally, dot (.) matches anything but a newline (\'5cn).  With preSingleLine, dot (.) will match anything, including newlines.  This allows a multiline string to be regarded as a single entity.  Equivalent to Perl's /s modifier.
+\par \tab Note that preMultiLine and preSingleLine can be used together.
+\par \b preExtended\plain\fs20\cf2 \tab Allow regex to contain extra whitespace, newlines and Perl-style comments, all of which will be filtered out.  This is sometimes called "free-spacing mode".
+\par \pard\li1415\fi-1415\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b preAnchored\plain\fs20\cf2 \tab Allows the regex to match only at the start of the subject or right after the previous match.
+\par \b preUngreedy\plain\fs20\cf2 \tab Repeat operaters (?, *, +, \'7bnum,num\'7d) are greedy by default, i.e. they try to match as many characters as possible.  Set preUngreedy to use ungreedy repeat operators by default, i.e. they try to match as few characters as possible.
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 State property\plain\fs20\cf3 \cf4 
+\par \uldb \cf3 TPerlRegExOptions type\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\fs32\cf1 RegEx property
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \cf4 \tab \uldb \cf3 Example\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2  RegEx: \b string\plain\f1\fs20\cf2 ;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 The regular expression to be matched.  See \uldb \f1\cf1 http://www.regular-expressions.info/\plain\f1\ul\fs20\cf1 \plain\fs20\cf2  to learn how to write a regular expression.
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 The TPerlRegEx class uses the "PCRE" regular expression flavor explained at \uldb \f1\cf1 http://www.regular-expressions.info/refflavors.html\plain\f1\ul\fs20\cf1 \plain\fs20\cf2 .
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 Subject property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Match method\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\cf1 RegEx property example
+\par \plain\fs20\cf2 
+\par \f1\b with\plain\f1\fs20\cf2  PerlRegEx1 \b do\plain\f1\fs20\cf2  \b begin\plain\f1\fs20\cf2 
+\par   RegEx := 'Perl';
+\par   Subject := 'Another example for TPerlRegEx';
+\par   \b if\plain\f1\fs20\cf2  Match \b then\plain\f1\fs20\cf2  ShowMessage('We found another Perl!');
+\par \b end\plain\f1\fs20\cf2 ;\plain\fs20\cf2 
+\par \par
+\pard \b\fs32\cf1 Replacement property
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \cf4 \tab \uldb \cf3 Example\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2  Replacement: \b string\plain\f1\fs20\cf2 ;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 String to replace matched expression with. Backreferences \'5c0, \'5c1, \'5c2 etc. as well as $1, $2, $3, etc. will be substituted with \uldb \cf3 Groups[number]\plain\fs20\cf3 \cf2 .
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 The TPerlRegEx class uses the "JGsoft" replacement text flavor explained at \uldb \f1\cf1 http://www.regular-expressions.info/refreplace.html\plain\f1\ul\fs20\cf1 \plain\fs20\cf2 .
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 RegEx property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Subject property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Groups property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Replace method\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 ReplaceAll method\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 OnReplace event\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\cf1 Replacement property example
+\par \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 This example will show a messagebox saying "Foo is the name of the bar I like".
+\par 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\b with\plain\f1\fs20\cf2  PerlRegEx1 \b do\plain\f1\fs20\cf2  \b begin\plain\f1\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635   Subject := 'I like to hang out at Foo bar';
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635   RegEx := '([A-Za-z]+) bar';
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635   Replacement := '\'5c1 is the name of the bar I like';
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635   \b if\plain\f1\fs20\cf2  Match \b then\plain\f1\fs20\cf2  Replace;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635   ShowMessage(RegEx.Subject);
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b end\plain\f1\fs20\cf2 ;\plain\fs20\cf2 
+\par \par
+\pard \b\fs32\cf1 Start property
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \cf4 \tab \uldb \cf3 Example\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2  Start: Integer;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 Starting position in \uldb \cf3 Subject\plain\fs20\cf3 \cf2  from which \uldb \cf3 MatchAgain\plain\fs20\cf3 \cf2  begins.
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 By default, MatchAgain continues from the end of the previous match, or from the start of the subject if there is no previous match.  Set the Start property to continue searching from another position.
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 Stop property\plain\fs20\cf3 \cf4 
+\par \uldb \cf3 Subject property\plain\fs20\cf3 \cf4 
+\par \uldb \cf3 MatchAgain method\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\fs32\cf1 State property
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \cf4 \tab \uldb \cf3 Example\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2  State: TPerlRegExState;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 State of the \uldb \cf3 Subject string\plain\fs20\cf3 \cf2 .
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\li1415\fi-1415\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b preNotBOL\plain\fs20\cf2 \tab Do not match ^ or \'5cA at the start of the subject string.  Set this state if the subject string is not the logical beginning of the data the user is working with.
+\par 
+\par \b preNotEOL\plain\fs20\cf2 \tab Do not match $ or \'5cZ at the end of the subject string.  Set this state if the subject string is not the logical end of the data the user is working with.
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\li1415\fi-1415\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b preNotEmpty\plain\fs20\cf2 \tab Do not match an empty string, i.e. if \uldb \cf3 Match\plain\fs20\cf3 \cf2  returns true, \uldb \cf3 Match\plain\fs20\cf3 \cf2  will never be an empty string.  This can be useful if everything in your regular expression is optional (e.g.: a?b?c?).  The match returned is normally the leftmost, longest match.  If the subject is "dabdabc", it would match at the empty string right before "d".  With this option, the regex will match "ab" (chars 2 and 3 in the subject), the leftmost, longest match that is not an empty string.  \uldb \cf3 MatchAgain\plain\fs20\cf3 \cf2  will match "abc" at the end of the subject.
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 Subject property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Options property\plain\fs20\cf3 \cf4 
+\par \uldb \cf3 TPerlRegExState type\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\cf1 State property example
+\par \plain\fs20\cf2 
+\par You can implement a "find from cursor" function as follows:
+\par 
+\par \f1 PerlRegEx1.Subject := Data.GetString(CursorPosition, Data.DataLength);
+\par PerlRegEx1.State := [preNotBOL];
+\par PerlRegEx1.Match;\plain\fs20\cf2 
+\par \par
+\pard \b\fs32\cf1 Stop property
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \cf4 \tab \uldb \cf3 Example\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2  Stop: Integer;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 Last character in Subject that \uldb \cf3 Match\plain\fs20\cf3 \cf2  and \uldb \cf3 MatchAgain\plain\fs20\cf3 \cf2  search through.  By default, they search until the end of the string.  Use the Stop property to search through only part of the string without having to reallocate a truncated string.
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 Start property\plain\fs20\cf3 \cf4 
+\par \uldb \cf3 Subject property\plain\fs20\cf3 \cf4 
+\par \uldb \cf3 MatchAgain method\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\cf1 Stop property example
+\par \plain\fs20\cf2 
+\par Search through characters 100..200 in S this way:
+\par 
+\par \f1 PerlRegEx1.Subject := S;
+\par PerlRegEx1.Start := 100;
+\par PerlRegEx1.Stop := 200;
+\par PerlRegEx1.MatchAgain;\plain\fs20\cf2 
+\par 
+\par This is faster than:
+\par 
+\par \f1 PerlRegEx1.Subject := Copy(S, 100, 100);
+\par PerlRegEx1.MatchAgain;\plain\fs20\cf2 
+\par 
+\par since the former method does not allocate any memory to keep a duplicate of S.
+\par \par
+\pard \b\fs32\cf1 Studied property
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2  Studied: Boolean;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 Read-only.
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 True if the RegEx has already been studied by the \uldb \cf3 Study method\plain\fs20\cf3 \cf2 .
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Calling Study when Studied is already True, has no effect.
+\par 
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 RegEx property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Compile method\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Study method\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\fs32\cf1 GroupCount property
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2  GroupCount: Integer;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 Read-only.
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Number of matched Groups stored in the \uldb \cf3 Groups\plain\fs20\cf3 \cf2  array.  This number is the number of the highest-numbered capturing group in your regular expression that actually participated in the last match.  It may be less than the number of capturing groups in your regular expression.
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 E.g. when the regex "(a)|(b)" matches "a", GroupCount will be 1.  When the same regex matches "b", GroupCount will be 2.
+\par 
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 GroupOffsets property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Groups property\plain\fs20\cf3 \cf2 
+\par 
+\par \par
+\pard \b\fs32\cf1 GroupLengths property
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2  GroupLengths[Index: Integer: Integer;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 Read-only. 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Lengths of the Group strings in the \uldb \cf3 Groups\plain\fs20\cf3 \cf2  array.
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Querying \f1 GroupLengths[Index]\plain\fs20\cf2  is faster than Length(Groups[Index]), since the former only needs to do a few integer computations, while the latter actually extracts a string from the \uldb \cf3 Subject\plain\fs20\cf3 \cf2 .
+\par Valid range for Index is 0..\uldb \cf3 GroupCount\plain\fs20\cf3 \cf2 .
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 GroupCount property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 GroupOffsets property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Groups property\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\fs32\cf1 GroupOffsets property
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2  GroupOffsets[Index: Integer: Integer;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 Read-only.
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Character offsets in the Subject string of the \uldb \cf3 Groups\plain\fs20\cf3 \cf2  strings.
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Valid range for Index is 0..\uldb \cf3 GroupCount\plain\fs20\cf3 \cf2 .
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \f1 Groups[Index] = Copy(Subject, GroupOffsets[Index], GroupLengths[Index]);\plain\fs20\cf2 
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 GroupCount property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 GroupLengths property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Groups property\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\fs32\cf1 Groups property
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \cf4 \tab \uldb \cf3 Example\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2  Groups[Index: Integer: \b string\plain\f1\fs20\cf2 ;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 Read-only. 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Matched Groups after a regex has been matched.
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1 Groups[0] = \uldb Match\plain\f1\fs20\cf2 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 The item count in the Groups array increases with one for every opening bracket in the regex.  The text matched by the part of the regex between that opening bracket and its corresponding closing bracket, will be put in the Groups array.
+\par 
+\par Valid range for Index is 0..\uldb \cf3 GroupCount\plain\fs20\cf3 \cf2 .  Note that GroupCount need not be equal to the number of opening brackets, since it may happen that only part of the regular expression played a role in the current match.
+\par 
+\par If you used named capturing groups in the regular expressions, use the \uldb \cf3 NamedGroup method\plain\fs20\cf3 \cf2  to retrieve the index number of a named group.
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 Match property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 GroupCount property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 GroupLengths property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 GroupOffsets property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Match method\plain\fs20\cf3 \cf4 
+\par \uldb \cf3 NamedGroup method\plain\fs20\cf3 \cf4 
+\par \uldb \cf3 StoreGroups method\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\cf1 Groups property example
+\par \plain\fs20\cf2 
+\par \f1\b with\plain\f1\fs20\cf2  PerlRegEx1 \b do\plain\f1\fs20\cf2  \b begin\plain\f1\fs20\cf2 
+\par   RegEx := '(Joe|Jack|William|Avarell) (Dalton)? did it';
+\par   Subject := 'The sheriff told us that Joe did it.';
+\par   \b if\plain\f1\fs20\cf2  Match \b then\plain\f1\fs20\cf2 
+\par     \b if\plain\f1\fs20\cf2  GroupCount = 2 \b then\plain\f1\fs20\cf2 
+\par       ShowMessage('Wanted: ' + Groups[1] + ' ' + Groups[2])
+\par     \b else\plain\f1\fs20\cf2 
+\par       ShowMessage('Wanted: ' + Groups[1] + ' (probably Dalton)');
+\par \b end\plain\f1\fs20\cf2 ;\plain\fs20\cf2 
+\par \par
+\pard \b\fs32\cf1 Subject property
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \cf4 \tab \uldb \cf3 Example\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2  Subject: \b string\plain\f1\fs20\cf2 ;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 The string on which \uldb \cf3 Match\plain\fs20\cf3 \cf2  will try to match \uldb \cf3 RegEx\plain\fs20\cf3 \cf2 .
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 RegEx property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Match method\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\cf1 Subject property example
+\par \plain\fs20\cf2 
+\par \f1\b with\plain\f1\fs20\cf2  PerlRegEx1 \b do\plain\f1\fs20\cf2  \b begin\plain\f1\fs20\cf2 
+\par   RegEx := Edit1.Text;
+\par   Subject := Edit2.Text;
+\par   \b if\plain\f1\fs20\cf2  Match \b then\plain\f1\fs20\cf2  ShowMessage('The regex you entered in Edit1 matches the string in Edit2')
+\par     \b else\plain\f1\fs20\cf2  ShowMessage('The regex you entered in Edit1 does not match the string in Edit2');
+\par \b end\plain\f1\fs20\cf2 ;\plain\fs20\cf2 
+\par \par
+\pard \b\fs32\cf1 Compile method
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 class\plain\f1\fs20\cf2  \b procedure\plain\f1\fs20\cf2  Compile;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 Before it can be used, the regular expression needs to be compiled.  \uldb \cf3 Match\plain\fs20\cf3 \cf2  will call Compile automatically if you did not do so.
+\par If the regular expression will be applied in time-critical code, you may wish to compile it during your application's initialization.  You may also want to call \uldb \cf3 Study\plain\fs20\cf3 \cf2  to further optimize the execution of the regex.
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 Compiled property\plain\fs20\cf3 
+\par \uldb Match method\plain\fs20\cf3 
+\par \uldb Study method\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\fs32\cf1 ComputeReplacement method
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \cf4 \tab \uldb \cf3 Example\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 function\plain\f1\fs20\cf2  ComputeReplacement: \b string\plain\f1\fs20\cf2 ;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 Returns \uldb \cf3 Replacement\plain\fs20\cf3 \cf2  with \uldb \cf3 backreferences\plain\fs20\cf3 \cf2  found by the last \uldb \cf3 match\plain\fs20\cf3 \cf2  filled in.  Unlike the \uldb \cf3 Replace method\plain\fs20\cf3 \cf2 , ComputeReplacement does not modify \uldb \cf3 Subject\plain\fs20\cf3 \cf2 .
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 Replacement property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Replace method\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\cf1 ComputeReplacement method example
+\par \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 This example will show a messagebox saying "Foo is the name of the bar I like".
+\par 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\b with\plain\f1\fs20\cf2  PerlRegEx1 \b do\plain\f1\fs20\cf2  \b begin\plain\f1\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635   Subject := 'I like to hang out at Foo bar';
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635   RegEx := '([A-Za-z]+) bar';
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635   Replacement := '\'5c1 is the name of the bar I like';
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635   \b if\plain\f1\fs20\cf2  Match \b then\plain\f1\fs20\cf2  ShowMessage(RegEx.ComputeReplacement);
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b end\plain\f1\fs20\cf2 ;\plain\fs20\cf2 
+\par \par
+\pard \b\fs32\cf1 EscapeRegExChars method
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \cf4 \tab \uldb \cf3 Example\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 function\plain\f1\fs20\cf2  EscapeRegExChars(\b const\plain\f1\fs20\cf2  S: \b string\plain\f1\fs20\cf2 ): \b string\plain\f1\fs20\cf2 ;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 Escapes regex characters in S so that the regex engine can be used to match S as plain text.
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 RegEx property\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\cf1 EscapeRegExChars method example
+\par \plain\fs20\cf2 
+\par To search for '1+1' as literal text, use:
+\par 
+\par \f1 PerlRegEx1.RegEx := PerlRegEx1.EscapeRegExChars('1+1');\plain\fs20\cf2 
+\par 
+\par which does the same as:
+\par 
+\par \f1 PerlRegEx1.RegEx := '1\'5c+1';\plain\fs20\cf2 
+\par \par
+\pard \b\fs32\cf1 Match method
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \cf4 \tab \uldb \cf3 Example\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 function\plain\f1\fs20\cf2  Match: Boolean;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 Attempts to match the regular expression specified in the \uldb \cf3 RegEx property\plain\fs20\cf3 \cf2  on the string specified in the \uldb \cf3 Subject property\plain\fs20\cf3 \cf2 .  If \uldb \cf3 Compile\plain\fs20\cf3 \cf2  has not yet been called, Match will do so for you.
+\par Call \uldb \cf3 MatchAgain\plain\fs20\cf3 \cf2  to attempt to match the regex on the remainder of the subject string after a successful call to Match.
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 RegEx property\plain\fs20\cf3 \cf4 
+\par \uldb \cf3 Options property\plain\fs20\cf3 \cf4 
+\par \uldb \cf3 Subject property\plain\fs20\cf3 \cf4 
+\par 
+\par \uldb \cf3 Compile method\plain\fs20\cf3 \cf4 
+\par \uldb \cf3 Match method\plain\fs20\cf3 \cf4 
+\par \uldb \cf3 MatchAgain method\plain\fs20\cf3 \cf4 
+\par 
+\par \uldb \cf3 OnMatch event\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\cf1 Match method example
+\par \plain\fs20\cf2 
+\par \f1\b with\plain\f1\fs20\cf2  PerlRegEx1 \b do\plain\f1\fs20\cf2  \b begin\plain\f1\fs20\cf2 
+\par   RegEx := Edit1.Text;
+\par   Subject := Edit2.Text;
+\par   \b if\plain\f1\fs20\cf2  Match \b then\plain\f1\fs20\cf2  ShowMessage('The regex you entered in Edit1 matches the string in Edit2')
+\par     \b else\plain\f1\fs20\cf2  ShowMessage('The regex you entered in Edit1 does not match the string in Edit2');
+\par \b end\plain\f1\fs20\cf2 ;\plain\fs20\cf2 
+\par \par
+\pard \b\fs32\cf1 MatchAgain method
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \cf4 \tab \uldb \cf3 Example\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 function\plain\f1\fs20\cf2  MatchAgain: Boolean;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 Attempt to match the regex to the remainder of the string after the previous match.  If you assigned the \uldb \cf3 Start property\plain\fs20\cf3 \cf2 , MatchAgain continues from that position instead.  If not, you should only call MatchAgain after calling \uldb \cf3 Match\plain\fs20\cf3 \cf2 .
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 Match method\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Start property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Stop property\plain\fs20\cf3 \cf4 
+\par \uldb \cf3 OnMatch event\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\cf1 MatchAgain method example
+\par \plain\fs20\cf2 
+\par \f1\b with\plain\f1\fs20\cf2  PerlRegEx1 \b do\plain\f1\fs20\cf2  \b begin\plain\f1\fs20\cf2 
+\par   RegEx := Edit1.Text;
+\par   Subject := Edit2.Text;
+\par   \b if\plain\f1\fs20\cf2  Match \b then\plain\f1\fs20\cf2  \b begin\plain\f1\fs20\cf2 
+\par     I := 1;
+\par     \b while\plain\f1\fs20\cf2  MatchAgain \b do\plain\f1\fs20\cf2  I := I + 1;
+\par     ShowMessage(Format('The regular expression matched the subject string %d times.', [I]);
+\par   \b end\plain\f1\fs20\cf2 
+\par   \b else\plain\f1\fs20\cf2 
+\par     ShowMessage('The regular expression did not match the subject string at all.');
+\par \b end\plain\f1\fs20\cf2 ;\plain\fs20\cf2 
+\par \par
+\pard \b\fs32\cf1 NamedGroup method
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \cf4 \tab \uldb \cf3 Example\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 function\plain\f1\fs20\cf2  NamedGroup(\b const\plain\f1\fs20\cf2  SEName: \b string\plain\f1\fs20\cf2 ): Integer;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 Returns the index of the named group SEName.  Use the returned value with the \uldb \cf3 Groups property\plain\fs20\cf3 \cf2  to retrieve the text matched by the named group.
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 GroupCount property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 GroupLengths property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 GroupOffsets property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Groups property\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\cf1 NamedGroup method example
+\par \plain\fs20\cf2 
+\par \f1\b with\plain\f1\fs20\cf2  PerlRegEx1 \b do\plain\f1\fs20\cf2  \b begin\plain\f1\fs20\cf2 
+\par   RegEx := '(?P<firstname>Joe|Jack|William|Avarell) did it';
+\par   Subject := 'The sheriff told us that Joe did it.';
+\par   \b if\plain\f1\fs20\cf2  Match \b then\plain\f1\fs20\cf2 
+\par     ShowMessage('Wanted: ' + Groups[NamedGroup('firstname')]);
+\par \b end\plain\f1\fs20\cf2 ;\plain\fs20\cf2 
+\par \par
+\pard \b\fs32\cf1 Replace method
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \cf4 \tab \uldb \cf3 Example\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 function\plain\f1\fs20\cf2  Replace: \b string\plain\f1\fs20\cf2 ;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 Replace matched expression in \uldb \cf3 Subject\plain\fs20\cf3 \cf2  with \uldb \cf3 ComputeReplacement\plain\fs20\cf3 \cf2 . Returns the actual replacement text from ComputeReplacement.  You may only call Replace after a successful call to \uldb \cf3 Match\plain\fs20\cf3 \cf2  or \uldb \cf3 MatchAgain\plain\fs20\cf3 \cf2 .
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 Replacement property\plain\fs20\cf3 \cf4 
+\par \uldb \cf3 Subject property\plain\fs20\cf3 \cf4 
+\par \uldb \cf3 ComputeReplacement method\plain\fs20\cf3 \cf4 
+\par \uldb \cf3 Match method\plain\fs20\cf3 \cf4 
+\par \uldb \cf3 MatchAgain method\plain\fs20\cf3 \cf4 
+\par \uldb \cf3 ReplaceAll method\plain\fs20\cf3 \cf4 
+\par \uldb \cf3 OnReplace event\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\cf1 Replace method example
+\par \plain\fs20\cf2 
+\par \f1\b with\plain\f1\fs20\cf2  PerlRegEx1 \b do\plain\f1\fs20\cf2  \b begin\plain\f1\fs20\cf2 
+\par   Subject := 'Bill loves Hillary';
+\par   RegEx := 'Hillary';
+\par   Replacement := 'Monica';
+\par   \b if\plain\f1\fs20\cf2  Match \b then\plain\f1\fs20\cf2  Replace;
+\par   ShowMessage(Subject);   \i // "Bill loves Monica"\plain\f1\fs20\cf2 
+\par \b end\plain\f1\fs20\cf2 ;\plain\fs20\cf2 
+\par \par
+\pard \b\fs32\cf1 ReplaceAll method
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \cf4 \tab \uldb \cf3 Example\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 function\plain\f1\fs20\cf2  ReplaceAll: Boolean;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 Replaces all matches of \uldb \cf3 RegEx\plain\fs20\cf3 \cf2  in \uldb \cf3 Subject\plain\fs20\cf3 \cf2  with \uldb \cf3 ComputeReplacement\plain\fs20\cf3 \cf2 . Returns True if anything was replaced at all.
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 RegEx property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Replacement property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Subject property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Match method\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 MatchAgain method\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Replace method\plain\fs20\cf3 \cf4 
+\par \uldb \cf3 OnReplace event\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\cf1 ReplaceAll method example
+\par \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 ReplaceAll is the equivalent of:
+\par 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\b if\plain\f1\fs20\cf2  Match \b then\plain\f1\fs20\cf2  \b begin\plain\f1\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635   Replace;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635   \b while\plain\f1\fs20\cf2  MatchAgain \b do\plain\f1\fs20\cf2  Replace;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b end\plain\f1\fs20\cf2 ;\plain\fs20\cf2 
+\par \par
+\pard \b\fs32\cf1 Split method
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \cf4 \tab \uldb \cf3 Example\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 procedure\plain\f1\fs20\cf2  Split(Strings: TStrings; Limit: Integer);
+\par \plain\fs20\cf2 
+\par \b\fs22 Description
+\par \plain\fs20\cf2 Splits \uldb \cf3 Subject\plain\fs20\cf3 \cf2  along regex matches.  The text between each regex match is appended to the list passed in the Strings parameter.  If Limit >= 1, at most Limit strings are appended.
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 RegEx property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Subject property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Match method\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 MatchAgain method\plain\fs20\cf3 \cf2 
+\par 
+\par \par
+\pard \b\cf1 Split method example
+\par \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 This example appends each item in the comma-delimited list in Edit1 to Memo1:
+\par 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\b with\plain\f1\fs20\cf2  PerlRegEx1 \b do\plain\f1\fs20\cf2  \b begin\plain\f1\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635   RegEx := ',';
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635   Subject := Edit1.Text;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635   Split(Memo1.Lines, 0);
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b end\plain\f1\fs20\cf2 ;\plain\fs20\cf2 
+\par \par
+\pard \b\fs32\cf1 StoreGroups method
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \cf4 \tab \uldb \cf3 Example\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 procedure\plain\f1\fs20\cf2  StoreGroups;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 Stores duplicates of \uldb \cf3 Groups[]\plain\fs20\cf3 \cf2  so they and \uldb \cf3 ComputeReplacement\plain\fs20\cf3 \cf2  will still return the proper strings even if \uldb \cf3 Subject\plain\fs20\cf3 \cf2  is changed or cleared.
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 This can be useful if you plan to modify the string that you assigned to Subject.  If you do that without clearing Subject first, Delphi will automatically create a duplicate of the subject string, which wastes memory and CPU time if the subject is very long.
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 Groups property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Subject property\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\cf1 StoreGroups method example
+\par \plain\fs20\cf2 
+\par The first example displays "Nobody wanted":
+\par 
+\par \f1 S := 'The sheriff told us that Joe did it.';
+\par \b with\plain\f1\fs20\cf2  PerlRegEx1 \b do\plain\f1\fs20\cf2  \b begin\plain\f1\fs20\cf2 
+\par   RegEx := '(Joe|Jack|William|Avarell) did it';
+\par   Subject := S;
+\par   \b if\plain\f1\fs20\cf2  Match \b then\plain\f1\fs20\cf2  \b begin\plain\f1\fs20\cf2 
+\par     Subject := ''; \i // Save memory\plain\f1\fs20\cf2 
+\par     \b if\plain\f1\fs20\cf2  RegEx.GroupCount = 1 \b then\plain\f1\fs20\cf2 
+\par       S := 'Wanted: ' + RegEx.Groups[1]
+\par     \b else\plain\f1\fs20\cf2 
+\par       S := 'Nobody wanted';
+\par     ShowMessage(S);
+\par \pard   \b end\plain\f1\fs20\cf2 ;
+\par \b end\plain\f1\fs20\cf2 ;
+\par 
+\par \plain\fs20\cf2 The second example displays "Wanted: Joe".
+\par 
+\par \f1 S := 'The sheriff told us that Joe did it.';
+\par \b with\plain\f1\fs20\cf2  PerlRegEx1 \b do\plain\f1\fs20\cf2  \b begin\plain\f1\fs20\cf2 
+\par   RegEx := '(Joe|Jack|William|Avarell) did it';
+\par   Subject := S;
+\par   \b if\plain\f1\fs20\cf2  Match \b then\plain\f1\fs20\cf2  \b begin\plain\f1\fs20\cf2 
+\par     RegEx.StoreGroups;
+\par     Subject := ''; \i // Save memory\plain\f1\fs20\cf2 
+\par     \b if\plain\f1\fs20\cf2  RegEx.GroupCount = 1 \b then\plain\f1\fs20\cf2 
+\par       S := 'Wanted: ' + RegEx.Groups[1]
+\par     \b else\plain\f1\fs20\cf2 
+\par       S := 'Nobody wanted';
+\par \pard     ShowMessage(S);
+\par   \b end\plain\f1\fs20\cf2 ;
+\par \b end\plain\f1\fs20\cf2 ;\plain\fs20\cf2 
+\par \par
+\pard \b\fs32\cf1 Study method
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \cf4 \tab \uldb \cf3 Example\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 procedure\plain\f1\fs20\cf2  Study;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 Study the regex. Studying takes time, but will make the execution of the regex a lot faster.
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Call study if you will be using the same regex many times.
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Study will also call \uldb \cf3 Compile\plain\fs20\cf3 \cf2  if this had not yet been done.
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 Compiled property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Studied property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Compile method\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\cf1 Study method example
+\par \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Depending on what the user entered in Edit1 and Memo1, RegEx might end up being a pretty complicated regular expression that wil be applied to the memo text a great many times.  This makes it worthwhile to spend a little extra time studying the regular expression.
+\par 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\b with\plain\f1\fs20\cf2  PerlRegEx1 \b do\plain\f1\fs20\cf2  \b begin\plain\f1\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635   RegEx := Edit1.Text;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635   Study;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635   Subject := Memo1.Lines.Text;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635   Replacement := Edit2.Text;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635   ReplaceAll;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635   Memo1.Lines.Text := Subject;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b end\plain\f1\fs20\cf2 ;\plain\fs20\cf2 
+\par \par
+\pard \b\fs32\cf1 OnMatch event
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2  OnMatch: TNotifyEvent;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 Triggered by \uldb \cf3 Match\plain\fs20\cf3 \cf2  and \uldb \cf3 MatchAgain\plain\fs20\cf3 \cf2  after a successful match.
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 Match method\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 MatchAgain method\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\fs32\cf1 OnReplace event
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \cf4 \tab \uldb \cf3 Example\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2  OnReplace: \uldb \cf3 TPerlRegExReplaceEvent\plain\f1\fs20\cf3 \cf2 ;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 Triggered by \uldb \cf3 Replace\plain\fs20\cf3 \cf2  and \uldb \cf3 ReplaceAll\plain\fs20\cf3 \cf2  just before the replacement is done, allowing you to determine the new string.
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 Replacement property\plain\fs20\cf3 \cf4 
+\par \uldb \cf3 ComputeReplacement method\plain\fs20\cf3 \cf4 
+\par \uldb \cf3 Replace method\plain\fs20\cf3 \cf4 
+\par \uldb \cf3 ReplaceAll method\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\cf1 OnReplace event example
+\par \plain\fs20\cf2 
+\par \f1\b with\plain\f1\fs20\cf2  PerlRegEx1 \b do\plain\f1\fs20\cf2  \b begin\plain\f1\fs20\cf2 
+\par   RegEx := 'Borland|Inprise|Microsoft';
+\par   Subject := Edit1.Text;
+\par   ReplaceAll;
+\par   Edit1.Text := Subject;
+\par \b end\plain\f1\fs20\cf2 ;
+\par 
+\par \b procedure\plain\f1\fs20\cf2  TForm1.PerlRegEx1Replace(Sender: TObject; \b var\plain\f1\fs20\cf2  ReplaceWith: \b string\plain\f1\fs20\cf2 );
+\par \b begin\plain\f1\fs20\cf2 
+\par   \b if\plain\f1\fs20\cf2  PerlRegEx1.Match = 'Inprise' \b then\plain\f1\fs20\cf2  ReplaceWith := 'Borland'
+\par     \b else\plain\f1\fs20\cf2  \b if\plain\f1\fs20\cf2  PerlRegEx1.Match = 'Borland' \b then\plain\f1\fs20\cf2  ReplaceWith := ':-)'
+\par \pard     \b else\plain\f1\fs20\cf2  ReplaceWith := ':-('
+\par \b end\plain\f1\fs20\cf2 ;\plain\fs20\cf2 
+\par \par
+\pard \b\fs32\cf1 TPerlRegExList class
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \cf4 \tab \ul \ul\cf3 Properties\plain\fs16\cf3 \cf4 \tab \ul \ul\cf3 Methods\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Unit
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 PerlRegEx\plain\fs20\cf3 \cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 You can add \uldb \cf3 TPerlRegEx objects\plain\fs20\cf3 \cf2  to a TPerlRegExList to match them all together on the same subject, as if they were one regex regex1|regex2|regex3|...
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 TPerlRegExList does not own the TPerlRegEx objects, just like a TList.  If a TPerlRegEx has been added to a TPerlRegExList, it should not be used in any other situation until it is removed from the list.
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 TPerlRegEx class\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\cf1 Properties
+\par \plain\fs20\cf2 
+\par \pard\tx195\tx635 \uldb \cf3 Count\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 MatchedRegEx\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 RegEx\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Start\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Stop\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Subject\plain\fs20\cf3 \cf2 
+\par 
+\par \par
+\pard \b\cf1 Methods
+\par \plain\fs20\cf2 
+\par \cf4 {\field {\*\fldinst import bm0.BMP}}\cf2  Key methods
+\par \pard\tx195\tx635 \uldb \cf3 Add\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 IndexOf\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Match\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 MatchAgain\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Clear\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Delete\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Insert\plain\fs20\cf3 \cf2 
+\par 
+\par \par
+\pard \b\fs32\cf1 Count property
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegExList\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2  Count: Integer;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 Number of \uldb \cf3 TPerlRegEx\plain\fs20\cf3 \cf2  objects in the list.
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Read-only.
+\par \par
+\pard \b\fs32\cf1 MatchedRegEx property
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegExList\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2  MatchedRegEx: TPerlRegEx;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 Indicates which \uldb \cf3 TPerlRegEx\plain\fs20\cf3 \cf2  object in the list was responsible for finding the last match.
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Read-only.
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 Match method\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 MatchAgain method\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\fs32\cf1 RegEx property
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegExList\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2  RegEx[Index: Integer]: TPerlRegEx;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 The regular expression of each \uldb \cf3 TPerlRegEx object\plain\fs20\cf3 \cf2  in the list.
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 Count property\plain\fs20\cf3 \strike 
+\par \uldb \plain\uldb\fs20\cf3 Add method\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\fs32\cf1 Start property
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegExList\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2  Start: Integer;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 Starting position in \uldb \cf3 Subject\plain\fs20\cf3 \cf2  from which \uldb \cf3 MatchAgain\plain\fs20\cf3 \cf2  begins.
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 By default, MatchAgain continues from the end of the previous match, or from the start of the subject if there is no previous match.  Set the Start property to continue searching from another position.
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 Stop property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Subject property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 MatchAgain method\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\fs32\cf1 Stop property
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegExList\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2  Stop: Integer;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 Last character in \uldb \cf3 Subject\plain\fs20\cf3 \cf2  that \uldb \cf3 Match\plain\fs20\cf3 \cf2  and \uldb \cf3 MatchAgain\plain\fs20\cf3 \cf2  search through.  By default, they search until the end of the string.  Use the Stop property to search through only part of the string without having to reallocate a truncated string.
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 Start property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Subject property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Match method\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 MatchAgain method\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\fs32\cf1 Subject property
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegExList\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2  Subject: \b string\plain\f1\fs20\cf2 ;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 The string on which \uldb \cf3 Match\plain\fs20\cf3 \cf2  will try to match the regular expressions.
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 Add method\plain\fs20\cf3 \strike 
+\par \uldb \plain\uldb\fs20\cf3 Match method\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 MatchAgain method\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\fs32\cf1 Add method
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegExList\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 function\plain\f1\fs20\cf2  Add(ARegEx: TPerlRegEx): Integer;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 Add a regular expression to the list.
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 Delete method\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Insert method\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\fs32\cf1 IndexOf method
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegExList\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 function\plain\f1\fs20\cf2  IndexOf(ARegEx: TPerlRegEx): Integer;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 Returns the index of the given \uldb \cf3 TPerlRegEx object\plain\fs20\cf3 \cf2  in the list.  Returns -1 if the list does not contain the object.
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 Add method\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Delete method\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Insert method\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\fs32\cf1 Match method
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegExList\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 function\plain\f1\fs20\cf2  Match: Boolean;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 Attempts to match the regular expressions in the list on the string specified in the \uldb \cf3 Subject property\plain\fs20\cf3 \cf2 .  Call \uldb \cf3 MatchAgain\plain\fs20\cf3 \cf2  to attempt to match the regex on the remainder of the subject string after a successful call to Match.
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 If more than one regular expression matches the subject, the leftmost match (i.e. the one with the lowest \uldb \cf3 MatchOffset\plain\fs20\cf3 \cf2 ) is returned by the \uldb \cf3 MatchedRegEx property\plain\fs20\cf3 \cf2 .  If more than one regular expression matches at the same position in the string, the one added to the list first is returned.  Use the MatchedRegEx property to get more information about the match.
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 MatchedRegEx property\plain\fs20\cf3 \strike 
+\par \uldb \plain\uldb\fs20\cf3 MatchAgain method\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\fs32\cf1 MatchAgain method
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegExList\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 function\plain\f1\fs20\cf2  MatchAgain: Boolean;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 Attempt to match the regex to the remainder of the string after the previous match.  If you assigned the \uldb \cf3 Start property\plain\fs20\cf3 \cf2 , MatchAgain continues from that position instead.  If not, you should only call MatchAgain after calling \uldb \cf3 Match\plain\fs20\cf3 \cf2 .
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 If more than one regular expression matches the subject, the leftmost match (i.e. the one with the lowest \uldb \cf3 MatchOffset\plain\fs20\cf3 \cf2 ) is returned by the \uldb \cf3 MatchedRegEx property\plain\fs20\cf3 \cf2 .  If more than one regular expression matches at the same position in the string, the one added to the list first is returned.  Use the MatchedRegEx property to get more information about the match.
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Note that MatchAgain continues from the end of the previous match.  Any matches by other regular expressions in the list that overlap with the previous match are ignored.  This is the same behavior as you would get when stringing all the regular expressions together as regex1|regex2|regex3... and using \uldb \cf3 TPerlRegEx.MatchAgain\plain\fs20\cf3 \cf2 .
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 MatchedRegEx property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Start property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Stop property\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Match method\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\fs32\cf1 Clear method
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegExList\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 procedure\plain\f1\fs20\cf2  Clear;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 Removes all regular expressions from the list.  The TPerlRegEx objects are NOT freed.
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 Delete method\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\fs32\cf1 Delete method
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegExList\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 procedure\plain\f1\fs20\cf2  Delete(Index: Integer);
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 Remove a \uldb \cf3 TPerlRegEx object\plain\fs20\cf3 \cf2  from the list.  The object is NOT freed.
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 Add method\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Clear method\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\fs32\cf1 Insert method
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegExList\plain\fs20\cf3 \cf2  class
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 procedure\plain\f1\fs20\cf2  Insert(Index: Integer; ARegEx: TPerlRegEx);
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 Add a regular expression to the list at a particular position.  The order of the regular expressions in the list matches only if two regular expressions match at the same position in the subject string.
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 Add method\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 Match method\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\fs32\cf1 TPerlRegExOptions type
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Unit
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 PerlRegEx\plain\fs20\cf3 \cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 type\plain\f1\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635   TPerlRegExOptions = \b set\plain\f1\fs20\cf2  \b of\plain\f1\fs20\cf2  (
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635     preCaseLess,       \i // /i -> Case insensitive\plain\f1\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635     preMultiLine,      \i // /m -> ^ and $ also match before/after a newline, not just at the beginning and the end of the string\plain\f1\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635     preSingleLine,     \i // /s -> Dot matches any character, including \'5cn (newline). Otherwise, it matches anything except \'5cn\plain\f1\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635     preExtended,       \i // /x -> Allow regex to contain extra whitespace, newlines and Perl-style comments, all of which will be filtered out\plain\f1\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635     preAnchored,       \i // /A -> Successful match can only occur at the start of the subject or right after the previous match\plain\f1\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635     preDollarEndOnly,  \i // /E\plain\f1\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635     preExtra,          \i // /X\plain\f1\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635     preUnGreedy        \i // Repeat operators (+, *, ?) are not greedy by default\plain\f1\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635   );                   \i //   (i.e. they try to match the minimum number of characters instead of the maximum)\plain\f1\fs20\cf2 
+\par \plain\fs20\cf2 
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 TPerlRegEx class\plain\fs20\cf3 \cf4 
+\par \uldb \cf3 Options property\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\fs32\cf1 TPerlRegExReplaceEvent type
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Unit
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 PerlRegEx\plain\fs20\cf3 \cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 type\plain\f1\fs20\cf2  TPerlRegExReplaceEvent = \b procedure\plain\f1\fs20\cf2 (Sender: TObject; \b var\plain\f1\fs20\cf2  ReplaceWith: \b string\plain\f1\fs20\cf2 ); \b of\plain\f1\fs20\cf2  \b object\plain\f1\fs20\cf2 ;
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 TPerlRegEx.\uldb \cf3 OnReplace\plain\fs20\cf3 \cf2  event type.
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Sender is the calling \uldb \cf3 TPerlRegEx object\plain\fs20\cf3 \cf2 .
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 ReplaceWith is equal to the string returned by \uldb \cf3 ComputeReplacement method\plain\fs20\cf3 \cf2 .  The matched expression will be replaced with whatever you assign to ReplaceWith.
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 TPerlRegEx class\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 OnReplace event\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\fs32\cf1 TPerlRegExState type
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Unit
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 PerlRegEx\plain\fs20\cf3 \cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\f1\fs20\cf2   TPerlRegExState = \b set\plain\f1\fs20\cf2  \b of\plain\f1\fs20\cf2  (
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635     preNotBOL,         \i // Not Beginning Of Line: ^ does not match at the start of Subject\plain\f1\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635     preNotEOL,         \i // Not End Of Line: $ does not match at the end of Subject\plain\f1\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635     preNotEmpty        \i // Empty matches not allowed\plain\f1\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635   );
+\par \plain\fs20\cf2 
+\par \par
+\pard \b\cf1 See also
+\par \plain\fs20\cf2 
+\par \uldb \cf3 TPerlRegEx class\plain\fs20\cf3 \cf2 
+\par \uldb \cf3 State property\plain\fs20\cf3 \cf2 
+\par \par
+\pard \b\fs32\cf1 MAX_GroupS constant
+\par \plain\fs16\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Unit
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 PerlRegEx\plain\fs20\cf3 \cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 const\plain\f1\fs20\cf2  MAX_GroupS = 99
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 
+\par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
+\par \pard \plain\fs20\cf2 Maximum number of capturing groups you can use in your regular expression.}

二進制
bm0.BMP