PERLREGEX.RTF 92 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333
  1. {\rtf1\ansi\deff0
  2. {\fonttbl{\f0\fswiss Arial;}{\f1\fswiss Courier New;}{\f2\fswiss Symbol;}}
  3. {\colortbl;\red0\green0\blue255;\red0\green0\blue0;\red0\green128\blue0;\red128\green0\blue0;}
  4. {\stylesheet{\fs32 \snext0 Normal;}
  5. }\pard\plain
  6. \pard \b\fs32\cf1\cb2 PerlRegEx unit
  7. \par \plain\fs16\cf2\cb2
  8. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3\cb2 \fs20\cf2
  9. \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.
  10. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  11. \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.
  12. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  13. \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.
  14. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  15. \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
  16. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  17. \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
  18. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  19. \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
  20. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  21. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 TPerlRegEx is licensed under the Mozilla Public License, version 1.1.
  22. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  23. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 This help file only describes the TPerlRegEx class itself.
  24. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  25. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Classes
  26. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3\cb2 TPerlRegEx\plain\fs20\cf3\cb2 \cf2
  27. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \cf3 TPerlRegExList\plain\fs20\cf3\cb2 \cf2
  28. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  29. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Types
  30. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3\cb2 TPerlRegExOptions\plain\fs20\cf3\cb2 \cf2
  31. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \cf3 TPerlRegExReplaceEvent\plain\fs20\cf3\cb2 \cf2
  32. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \cf3 TPerlRegExState\plain\fs20\cf3\cb2 \cf2
  33. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  34. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Constants
  35. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3\cb2 MAX_GroupS\plain\fs20\cf3\cb2 \cf2
  36. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  37. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  38. \par \par
  39. \pard \plain\b\fs20\cf1 See also
  40. \par \plain\fs20\cf2
  41. \par \uldb \cf3 TPerlRegEx class\plain\fs20\cf3 \cf2
  42. \par \par
  43. \pard \b\fs32\cf1 TPerlRegEx class
  44. \par \plain\fs16\cf2
  45. \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
  46. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Unit
  47. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 PerlRegEx\plain\fs20\cf3 \cf2
  48. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  49. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  50. \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 .
  51. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  52. \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
  53. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  54. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Tasks\plain\fs20\cf2
  55. \par \pard\li195\fi-195\tx195 \f2\fs18 \'b7\tab \plain\fs20\cf2 Declasre a variable of type TPerlRegEx and call its constructor.
  56. \par \f2\fs18 \'b7\tab \plain\fs20\cf2 Set the \uldb \cf3 Options property\plain\fs20\cf3 \cf2
  57. \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.
  58. \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
  59. \par \f2\fs18 \'b7\tab \plain\fs20\cf2 Assign a string to the \uldb \cf3 Subject property\plain\fs20\cf3 \cf2
  60. \par \f2\fs18 \'b7\tab \plain\fs20\cf2 Call the \uldb \cf3 Match method\plain\fs20\cf3 \cf2
  61. \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
  62. \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
  63. \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.
  64. \par \par
  65. \pard \b\cf1 Properties
  66. \par \plain\fs20\cf2
  67. \par \pard\tx195\tx635 \uldb \cf3 Compiled\plain\fs20\cf3 \cf2
  68. \par \uldb \cf3 FoundMatch\plain\fs20\cf3 \cf2
  69. \par \uldb \cf3 Match\plain\fs20\cf3 \cf2
  70. \par \uldb \cf3 MatchLength\plain\fs20\cf3 \cf2
  71. \par \uldb \cf3 MatchOffset\plain\fs20\cf3 \cf2
  72. \par \uldb \cf3 Options\plain\fs20\cf3 \cf2
  73. \par \uldb \cf3 RegEx\plain\fs20\cf3 \cf2
  74. \par \uldb \cf3 Replacement\plain\fs20\cf3 \cf2
  75. \par \uldb \cf3 Start\plain\fs20\cf3 \cf2
  76. \par \uldb \cf3 State\plain\fs20\cf3 \cf2
  77. \par \uldb \cf3 Stop\plain\fs20\cf3 \cf2
  78. \par \uldb \cf3 Studied\plain\fs20\cf3 \cf2
  79. \par \uldb \cf3 GroupCount\plain\fs20\cf3 \cf2
  80. \par \uldb \cf3 GroupLengths\plain\fs20\cf3 \cf2
  81. \par \uldb \cf3 GroupOffsets\plain\fs20\cf3 \cf2
  82. \par \uldb \cf3 Groups\plain\fs20\cf3 \cf2
  83. \par \uldb \cf3 Subject\plain\fs20\cf3 \cf2
  84. \par
  85. \par \par
  86. \pard \b\cf1 Methods
  87. \par \plain\fs20\cf2
  88. \par \pard\tx195\tx635 \tab \cf4 {\field {\*\fldinst import bm0.BMP}}\tab \uldb \cf3 Compile\plain\fs20\cf3 \cf2
  89. \par \tab \cf4 {\field {\*\fldinst import bm0.BMP}}\tab \uldb \cf3 ComputeReplacement\plain\fs20\cf3 \cf2
  90. \par \tab \cf4 {\field {\*\fldinst import bm0.BMP}}\tab \uldb \cf3 EscapeRegExChars\plain\fs20\cf3 \cf2
  91. \par \tab \cf4 {\field {\*\fldinst import bm0.BMP}}\tab \uldb \cf3 Match\plain\fs20\cf3 \cf2
  92. \par \tab \cf4 {\field {\*\fldinst import bm0.BMP}}\tab \uldb \cf3 MatchAgain\plain\fs20\cf3 \cf2
  93. \par \tab \cf4 {\field {\*\fldinst import bm0.BMP}}\tab \uldb \cf3 NamedGroup\plain\fs20\cf3 \cf2
  94. \par \tab \cf4 {\field {\*\fldinst import bm0.BMP}}\tab \uldb \cf3 Replace\plain\fs20\cf3 \cf2
  95. \par \tab \cf4 {\field {\*\fldinst import bm0.BMP}}\tab \uldb \cf3 ReplaceAll\plain\fs20\cf3 \cf2
  96. \par \tab \cf4 {\field {\*\fldinst import bm0.BMP}}\tab \uldb \cf3 Split method\plain\fs20\cf3 \cf2
  97. \par \tab \cf4 {\field {\*\fldinst import bm0.BMP}}\tab \uldb \cf3 StoreGroups\plain\fs20\cf3 \cf2
  98. \par \tab \cf4 {\field {\*\fldinst import bm0.BMP}}\tab \uldb \cf3 Study\plain\fs20\cf3 \cf2
  99. \par \pard\tx195\tx635
  100. \par \par
  101. \pard \b\cf1 Events
  102. \par \plain\fs20\cf2
  103. \par \pard\tx195\tx635 \tab \cf4 {\field {\*\fldinst import bm0.BMP}}\tab \uldb \cf3 OnMatch\plain\fs20\cf3 \cf2
  104. \par \tab \cf4 {\field {\*\fldinst import bm0.BMP}}\tab \uldb \cf3 OnReplace\plain\fs20\cf3 \cf2
  105. \par
  106. \par \par
  107. \pard \b\fs32\cf1 Compiled property
  108. \par \plain\fs16\cf2
  109. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2
  110. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  111. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2 class
  112. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  113. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  114. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2 Compiled: Boolean;
  115. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  116. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  117. \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 .
  118. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Read-only.
  119. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  120. \par \par
  121. \pard \b\cf1 See also
  122. \par \plain\fs20\cf2
  123. \par \uldb \cf3 Compile method\plain\fs20\cf3 \cf2
  124. \par \par
  125. \pard \b\fs32\cf1 FoundMatch property
  126. \par \plain\fs16\cf2
  127. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2
  128. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  129. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2 class
  130. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  131. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  132. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2 FoundMatch: Boolean;
  133. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  134. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  135. \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.
  136. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Read-only.
  137. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  138. \par \par
  139. \pard \b\cf1 See also
  140. \par \plain\fs20\cf2
  141. \par \uldb \cf3 Match property\plain\fs20\cf3 \cf2
  142. \par \uldb \cf3 Groups property\plain\fs20\cf3 \cf4
  143. \par \strike\cf3
  144. \par \uldb \plain\uldb\fs20\cf3 Match method\plain\fs20\cf3 \cf4
  145. \par \uldb \cf3 MatchAgain method\plain\fs20\cf3 \cf2
  146. \par \par
  147. \pard \b\fs32\cf1 Match property
  148. \par \plain\fs16\cf2
  149. \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
  150. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  151. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2 class
  152. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  153. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  154. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2 Match: \b string\plain\f1\fs20\cf2 ;
  155. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  156. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  157. \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 .
  158. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Read-only.
  159. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  160. \par \par
  161. \pard \b\cf1 See also
  162. \par \plain\fs20\cf2
  163. \par \uldb \cf3 FoundMatch property\plain\fs20\cf3 \cf2
  164. \par \uldb \cf3 MatchLength property\plain\fs20\cf3 \cf2
  165. \par \uldb \cf3 MatchOffset property\plain\fs20\cf3 \cf4
  166. \par \uldb \cf3 Groups property\plain\fs20\cf3 \cf4
  167. \par \cf2
  168. \par \uldb \cf3 Subject property\plain\fs20\cf3 \cf2
  169. \par \uldb \cf3 Match method\plain\fs20\cf3 \cf2
  170. \par \uldb \cf3 MatchAgain method\plain\fs20\cf3 \cf2
  171. \par \par
  172. \pard \b\cf1 Match property example
  173. \par \plain\fs20\cf2
  174. \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.
  175. \par
  176. \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
  177. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 RegEx := 'Windows|Linux'; \i // Matches 'Windows' or 'Linux', whichever comes first\plain\f1\fs20\cf2
  178. \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!';
  179. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b end\plain\f1\fs20\cf2 ;\plain\fs20\cf2
  180. \par \par
  181. \pard \b\fs32\cf1 MatchLength property
  182. \par \plain\fs16\cf2
  183. \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
  184. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  185. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2 class
  186. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  187. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  188. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2 MatchLength: Integer;
  189. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  190. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  191. \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.
  192. \par Read-only.
  193. \par
  194. \par \par
  195. \pard \b\cf1 See also
  196. \par \plain\fs20\cf2
  197. \par \uldb \cf3 FoundMatch property\plain\fs20\cf3 \cf2
  198. \par \uldb \cf3 Match property\plain\fs20\cf3 \cf2
  199. \par \uldb \cf3 MatchOffset property\plain\fs20\cf3 \cf4
  200. \par \uldb \cf3 Groups property\plain\fs20\cf3 \cf4
  201. \par \uldb \cf3 GroupLengths property\plain\fs20\cf3 \cf4
  202. \par \cf2
  203. \par \uldb \cf3 Subject property\plain\fs20\cf3 \cf2
  204. \par \uldb \cf3 Match method\plain\fs20\cf3 \cf2
  205. \par \uldb \cf3 MatchAgain method\plain\fs20\cf3 \cf2
  206. \par \par
  207. \pard \b\cf1 MatchLength property example
  208. \par \plain\fs20\cf2
  209. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 This example assumes you placed a TLabel and a TPerlRegEx on a form.
  210. \par
  211. \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
  212. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Subject := 'Rating: AAA';
  213. \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
  214. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b if\plain\f1\fs20\cf2 Match \b then\plain\f1\fs20\cf2 Label1.Caption :=
  215. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 'You have been rated with ' + IntToStr(MatchLength) + 'A''s'
  216. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b else\plain\f1\fs20\cf2
  217. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Label1.Caption := 'You have a poor rating';
  218. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b end\plain\f1\fs20\cf2 ;\plain\fs20\cf2
  219. \par \par
  220. \pard \b\fs32\cf1 MatchOffset property
  221. \par \plain\fs16\cf2
  222. \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
  223. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  224. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2 class
  225. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  226. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  227. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2 MatchOffset: Integer;
  228. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  229. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  230. \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.
  231. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Read-only.
  232. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  233. \par \par
  234. \pard \b\cf1 See also
  235. \par \plain\fs20\cf2
  236. \par \uldb \cf3 FoundMatch property\plain\fs20\cf3 \cf2
  237. \par \uldb \cf3 Match property\plain\fs20\cf3 \cf2
  238. \par \uldb \cf3 MatchLength property\plain\fs20\cf3 \strike
  239. \par \uldb \plain\uldb\fs20\cf3 Groups property\plain\fs20\cf3 \cf4
  240. \par \uldb \cf3 GroupOffsets property\plain\fs20\cf3 \cf4
  241. \par \cf2
  242. \par \uldb \cf3 Subject property\plain\fs20\cf3 \cf2
  243. \par \uldb \cf3 Match method\plain\fs20\cf3 \cf2
  244. \par \uldb \cf3 MatchAgain method\plain\fs20\cf3 \cf2
  245. \par \par
  246. \pard \b\cf1 MatchOffset property example
  247. \par \plain\fs20\cf2
  248. \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.
  249. \par
  250. \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
  251. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 RegEx := 'Bye';
  252. \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: ' +
  253. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Copy(Subject, 1, MatchOffset-1);
  254. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b end\plain\f1\fs20\cf2 ;\plain\fs20\cf2
  255. \par \par
  256. \pard \b\fs32\cf1 Options property
  257. \par \plain\fs16\cf2
  258. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2
  259. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  260. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2 class
  261. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  262. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  263. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2 Options: TPerlRegExOptions;
  264. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  265. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  266. \par \plain\fs20\cf2 These are the most important options you can specify:
  267. \par
  268. \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.
  269. \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.
  270. \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.
  271. \par \tab Note that preMultiLine and preSingleLine can be used together.
  272. \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".
  273. \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.
  274. \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.
  275. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  276. \par \par
  277. \pard \b\cf1 See also
  278. \par \plain\fs20\cf2
  279. \par \uldb \cf3 State property\plain\fs20\cf3 \cf4
  280. \par \uldb \cf3 TPerlRegExOptions type\plain\fs20\cf3 \cf2
  281. \par \par
  282. \pard \b\fs32\cf1 RegEx property
  283. \par \plain\fs16\cf2
  284. \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
  285. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  286. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2 class
  287. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  288. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  289. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2 RegEx: \b string\plain\f1\fs20\cf2 ;
  290. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  291. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  292. \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.
  293. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  294. \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 .
  295. \par \par
  296. \pard \b\cf1 See also
  297. \par \plain\fs20\cf2
  298. \par \uldb \cf3 Subject property\plain\fs20\cf3 \cf2
  299. \par \uldb \cf3 Match method\plain\fs20\cf3 \cf2
  300. \par \par
  301. \pard \b\cf1 RegEx property example
  302. \par \plain\fs20\cf2
  303. \par \f1\b with\plain\f1\fs20\cf2 PerlRegEx1 \b do\plain\f1\fs20\cf2 \b begin\plain\f1\fs20\cf2
  304. \par RegEx := 'Perl';
  305. \par Subject := 'Another example for TPerlRegEx';
  306. \par \b if\plain\f1\fs20\cf2 Match \b then\plain\f1\fs20\cf2 ShowMessage('We found another Perl!');
  307. \par \b end\plain\f1\fs20\cf2 ;\plain\fs20\cf2
  308. \par \par
  309. \pard \b\fs32\cf1 Replacement property
  310. \par \plain\fs16\cf2
  311. \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
  312. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  313. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2 class
  314. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  315. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  316. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2 Replacement: \b string\plain\f1\fs20\cf2 ;
  317. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  318. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  319. \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 .
  320. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  321. \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 .
  322. \par \par
  323. \pard \b\cf1 See also
  324. \par \plain\fs20\cf2
  325. \par \uldb \cf3 RegEx property\plain\fs20\cf3 \cf2
  326. \par \uldb \cf3 Subject property\plain\fs20\cf3 \cf2
  327. \par \uldb \cf3 Groups property\plain\fs20\cf3 \cf2
  328. \par \uldb \cf3 Replace method\plain\fs20\cf3 \cf2
  329. \par \uldb \cf3 ReplaceAll method\plain\fs20\cf3 \cf2
  330. \par \uldb \cf3 OnReplace event\plain\fs20\cf3 \cf2
  331. \par \par
  332. \pard \b\cf1 Replacement property example
  333. \par \plain\fs20\cf2
  334. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 This example will show a messagebox saying "Foo is the name of the bar I like".
  335. \par
  336. \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
  337. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Subject := 'I like to hang out at Foo bar';
  338. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 RegEx := '([A-Za-z]+) bar';
  339. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Replacement := '\'5c1 is the name of the bar I like';
  340. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b if\plain\f1\fs20\cf2 Match \b then\plain\f1\fs20\cf2 Replace;
  341. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 ShowMessage(RegEx.Subject);
  342. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b end\plain\f1\fs20\cf2 ;\plain\fs20\cf2
  343. \par \par
  344. \pard \b\fs32\cf1 Start property
  345. \par \plain\fs16\cf2
  346. \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
  347. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  348. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2 class
  349. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  350. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  351. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2 Start: Integer;
  352. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  353. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  354. \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.
  355. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  356. \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.
  357. \par \par
  358. \pard \b\cf1 See also
  359. \par \plain\fs20\cf2
  360. \par \uldb \cf3 Stop property\plain\fs20\cf3 \cf4
  361. \par \uldb \cf3 Subject property\plain\fs20\cf3 \cf4
  362. \par \uldb \cf3 MatchAgain method\plain\fs20\cf3 \cf2
  363. \par \par
  364. \pard \b\fs32\cf1 State property
  365. \par \plain\fs16\cf2
  366. \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
  367. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  368. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2 class
  369. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  370. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  371. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2 State: TPerlRegExState;
  372. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  373. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  374. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 State of the \uldb \cf3 Subject string\plain\fs20\cf3 \cf2 .
  375. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  376. \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.
  377. \par
  378. \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.
  379. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  380. \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.
  381. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  382. \par \par
  383. \pard \b\cf1 See also
  384. \par \plain\fs20\cf2
  385. \par \uldb \cf3 Subject property\plain\fs20\cf3 \cf2
  386. \par \uldb \cf3 Options property\plain\fs20\cf3 \cf4
  387. \par \uldb \cf3 TPerlRegExState type\plain\fs20\cf3 \cf2
  388. \par \par
  389. \pard \b\cf1 State property example
  390. \par \plain\fs20\cf2
  391. \par You can implement a "find from cursor" function as follows:
  392. \par
  393. \par \f1 PerlRegEx1.Subject := Data.GetString(CursorPosition, Data.DataLength);
  394. \par PerlRegEx1.State := [preNotBOL];
  395. \par PerlRegEx1.Match;\plain\fs20\cf2
  396. \par \par
  397. \pard \b\fs32\cf1 Stop property
  398. \par \plain\fs16\cf2
  399. \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
  400. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  401. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2 class
  402. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  403. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  404. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2 Stop: Integer;
  405. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  406. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  407. \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.
  408. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  409. \par \par
  410. \pard \b\cf1 See also
  411. \par \plain\fs20\cf2
  412. \par \uldb \cf3 Start property\plain\fs20\cf3 \cf4
  413. \par \uldb \cf3 Subject property\plain\fs20\cf3 \cf4
  414. \par \uldb \cf3 MatchAgain method\plain\fs20\cf3 \cf2
  415. \par \par
  416. \pard \b\cf1 Stop property example
  417. \par \plain\fs20\cf2
  418. \par Search through characters 100..200 in S this way:
  419. \par
  420. \par \f1 PerlRegEx1.Subject := S;
  421. \par PerlRegEx1.Start := 100;
  422. \par PerlRegEx1.Stop := 200;
  423. \par PerlRegEx1.MatchAgain;\plain\fs20\cf2
  424. \par
  425. \par This is faster than:
  426. \par
  427. \par \f1 PerlRegEx1.Subject := Copy(S, 100, 100);
  428. \par PerlRegEx1.MatchAgain;\plain\fs20\cf2
  429. \par
  430. \par since the former method does not allocate any memory to keep a duplicate of S.
  431. \par \par
  432. \pard \b\fs32\cf1 Studied property
  433. \par \plain\fs16\cf2
  434. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2
  435. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  436. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2 class
  437. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  438. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  439. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2 Studied: Boolean;
  440. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  441. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  442. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 Read-only.
  443. \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 .
  444. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Calling Study when Studied is already True, has no effect.
  445. \par
  446. \par \par
  447. \pard \b\cf1 See also
  448. \par \plain\fs20\cf2
  449. \par \uldb \cf3 RegEx property\plain\fs20\cf3 \cf2
  450. \par \uldb \cf3 Compile method\plain\fs20\cf3 \cf2
  451. \par \uldb \cf3 Study method\plain\fs20\cf3 \cf2
  452. \par \par
  453. \pard \b\fs32\cf1 GroupCount property
  454. \par \plain\fs16\cf2
  455. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2
  456. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  457. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2 class
  458. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  459. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  460. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2 GroupCount: Integer;
  461. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  462. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  463. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 Read-only.
  464. \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.
  465. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  466. \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.
  467. \par
  468. \par \par
  469. \pard \b\cf1 See also
  470. \par \plain\fs20\cf2
  471. \par \uldb \cf3 GroupOffsets property\plain\fs20\cf3 \cf2
  472. \par \uldb \cf3 Groups property\plain\fs20\cf3 \cf2
  473. \par
  474. \par \par
  475. \pard \b\fs32\cf1 GroupLengths property
  476. \par \plain\fs16\cf2
  477. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2
  478. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  479. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2 class
  480. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  481. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  482. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2 GroupLengths[Index: Integer: Integer;
  483. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  484. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  485. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 Read-only.
  486. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Lengths of the Group strings in the \uldb \cf3 Groups\plain\fs20\cf3 \cf2 array.
  487. \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 .
  488. \par Valid range for Index is 0..\uldb \cf3 GroupCount\plain\fs20\cf3 \cf2 .
  489. \par \par
  490. \pard \b\cf1 See also
  491. \par \plain\fs20\cf2
  492. \par \uldb \cf3 GroupCount property\plain\fs20\cf3 \cf2
  493. \par \uldb \cf3 GroupOffsets property\plain\fs20\cf3 \cf2
  494. \par \uldb \cf3 Groups property\plain\fs20\cf3 \cf2
  495. \par \par
  496. \pard \b\fs32\cf1 GroupOffsets property
  497. \par \plain\fs16\cf2
  498. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2
  499. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  500. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2 class
  501. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  502. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  503. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2 GroupOffsets[Index: Integer: Integer;
  504. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  505. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  506. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 Read-only.
  507. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Character offsets in the Subject string of the \uldb \cf3 Groups\plain\fs20\cf3 \cf2 strings.
  508. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Valid range for Index is 0..\uldb \cf3 GroupCount\plain\fs20\cf3 \cf2 .
  509. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  510. \par \f1 Groups[Index] = Copy(Subject, GroupOffsets[Index], GroupLengths[Index]);\plain\fs20\cf2
  511. \par \par
  512. \pard \b\cf1 See also
  513. \par \plain\fs20\cf2
  514. \par \uldb \cf3 GroupCount property\plain\fs20\cf3 \cf2
  515. \par \uldb \cf3 GroupLengths property\plain\fs20\cf3 \cf2
  516. \par \uldb \cf3 Groups property\plain\fs20\cf3 \cf2
  517. \par \par
  518. \pard \b\fs32\cf1 Groups property
  519. \par \plain\fs16\cf2
  520. \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
  521. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  522. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2 class
  523. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  524. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  525. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2 Groups[Index: Integer: \b string\plain\f1\fs20\cf2 ;
  526. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  527. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  528. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 Read-only.
  529. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Matched Groups after a regex has been matched.
  530. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1 Groups[0] = \uldb Match\plain\f1\fs20\cf2 \plain\fs20\cf2
  531. \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.
  532. \par
  533. \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.
  534. \par
  535. \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.
  536. \par \par
  537. \pard \b\cf1 See also
  538. \par \plain\fs20\cf2
  539. \par \uldb \cf3 Match property\plain\fs20\cf3 \cf2
  540. \par \uldb \cf3 GroupCount property\plain\fs20\cf3 \cf2
  541. \par \uldb \cf3 GroupLengths property\plain\fs20\cf3 \cf2
  542. \par \uldb \cf3 GroupOffsets property\plain\fs20\cf3 \cf2
  543. \par \uldb \cf3 Match method\plain\fs20\cf3 \cf4
  544. \par \uldb \cf3 NamedGroup method\plain\fs20\cf3 \cf4
  545. \par \uldb \cf3 StoreGroups method\plain\fs20\cf3 \cf2
  546. \par \par
  547. \pard \b\cf1 Groups property example
  548. \par \plain\fs20\cf2
  549. \par \f1\b with\plain\f1\fs20\cf2 PerlRegEx1 \b do\plain\f1\fs20\cf2 \b begin\plain\f1\fs20\cf2
  550. \par RegEx := '(Joe|Jack|William|Avarell) (Dalton)? did it';
  551. \par Subject := 'The sheriff told us that Joe did it.';
  552. \par \b if\plain\f1\fs20\cf2 Match \b then\plain\f1\fs20\cf2
  553. \par \b if\plain\f1\fs20\cf2 GroupCount = 2 \b then\plain\f1\fs20\cf2
  554. \par ShowMessage('Wanted: ' + Groups[1] + ' ' + Groups[2])
  555. \par \b else\plain\f1\fs20\cf2
  556. \par ShowMessage('Wanted: ' + Groups[1] + ' (probably Dalton)');
  557. \par \b end\plain\f1\fs20\cf2 ;\plain\fs20\cf2
  558. \par \par
  559. \pard \b\fs32\cf1 Subject property
  560. \par \plain\fs16\cf2
  561. \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
  562. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  563. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2 class
  564. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  565. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  566. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2 Subject: \b string\plain\f1\fs20\cf2 ;
  567. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  568. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  569. \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 .
  570. \par \par
  571. \pard \b\cf1 See also
  572. \par \plain\fs20\cf2
  573. \par \uldb \cf3 RegEx property\plain\fs20\cf3 \cf2
  574. \par \uldb \cf3 Match method\plain\fs20\cf3 \cf2
  575. \par \par
  576. \pard \b\cf1 Subject property example
  577. \par \plain\fs20\cf2
  578. \par \f1\b with\plain\f1\fs20\cf2 PerlRegEx1 \b do\plain\f1\fs20\cf2 \b begin\plain\f1\fs20\cf2
  579. \par RegEx := Edit1.Text;
  580. \par Subject := Edit2.Text;
  581. \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')
  582. \par \b else\plain\f1\fs20\cf2 ShowMessage('The regex you entered in Edit1 does not match the string in Edit2');
  583. \par \b end\plain\f1\fs20\cf2 ;\plain\fs20\cf2
  584. \par \par
  585. \pard \b\fs32\cf1 Compile method
  586. \par \plain\fs16\cf2
  587. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2
  588. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  589. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2 class
  590. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  591. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  592. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 class\plain\f1\fs20\cf2 \b procedure\plain\f1\fs20\cf2 Compile;
  593. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  594. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  595. \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.
  596. \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.
  597. \par \par
  598. \pard \b\cf1 See also
  599. \par \plain\fs20\cf2
  600. \par \uldb \cf3 Compiled property\plain\fs20\cf3
  601. \par \uldb Match method\plain\fs20\cf3
  602. \par \uldb Study method\plain\fs20\cf3 \cf2
  603. \par \par
  604. \pard \b\fs32\cf1 ComputeReplacement method
  605. \par \plain\fs16\cf2
  606. \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
  607. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  608. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2 class
  609. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  610. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  611. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 function\plain\f1\fs20\cf2 ComputeReplacement: \b string\plain\f1\fs20\cf2 ;
  612. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  613. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  614. \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 .
  615. \par \par
  616. \pard \b\cf1 See also
  617. \par \plain\fs20\cf2
  618. \par \uldb \cf3 Replacement property\plain\fs20\cf3 \cf2
  619. \par \uldb \cf3 Replace method\plain\fs20\cf3 \cf2
  620. \par \par
  621. \pard \b\cf1 ComputeReplacement method example
  622. \par \plain\fs20\cf2
  623. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 This example will show a messagebox saying "Foo is the name of the bar I like".
  624. \par
  625. \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
  626. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Subject := 'I like to hang out at Foo bar';
  627. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 RegEx := '([A-Za-z]+) bar';
  628. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Replacement := '\'5c1 is the name of the bar I like';
  629. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b if\plain\f1\fs20\cf2 Match \b then\plain\f1\fs20\cf2 ShowMessage(RegEx.ComputeReplacement);
  630. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b end\plain\f1\fs20\cf2 ;\plain\fs20\cf2
  631. \par \par
  632. \pard \b\fs32\cf1 EscapeRegExChars method
  633. \par \plain\fs16\cf2
  634. \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
  635. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  636. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2 class
  637. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  638. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  639. \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 ;
  640. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  641. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  642. \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.
  643. \par \par
  644. \pard \b\cf1 See also
  645. \par \plain\fs20\cf2
  646. \par \uldb \cf3 RegEx property\plain\fs20\cf3 \cf2
  647. \par \par
  648. \pard \b\cf1 EscapeRegExChars method example
  649. \par \plain\fs20\cf2
  650. \par To search for '1+1' as literal text, use:
  651. \par
  652. \par \f1 PerlRegEx1.RegEx := PerlRegEx1.EscapeRegExChars('1+1');\plain\fs20\cf2
  653. \par
  654. \par which does the same as:
  655. \par
  656. \par \f1 PerlRegEx1.RegEx := '1\'5c+1';\plain\fs20\cf2
  657. \par \par
  658. \pard \b\fs32\cf1 Match method
  659. \par \plain\fs16\cf2
  660. \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
  661. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  662. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2 class
  663. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  664. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  665. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 function\plain\f1\fs20\cf2 Match: Boolean;
  666. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  667. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  668. \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.
  669. \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.
  670. \par \par
  671. \pard \b\cf1 See also
  672. \par \plain\fs20\cf2
  673. \par \uldb \cf3 RegEx property\plain\fs20\cf3 \cf4
  674. \par \uldb \cf3 Options property\plain\fs20\cf3 \cf4
  675. \par \uldb \cf3 Subject property\plain\fs20\cf3 \cf4
  676. \par
  677. \par \uldb \cf3 Compile method\plain\fs20\cf3 \cf4
  678. \par \uldb \cf3 Match method\plain\fs20\cf3 \cf4
  679. \par \uldb \cf3 MatchAgain method\plain\fs20\cf3 \cf4
  680. \par
  681. \par \uldb \cf3 OnMatch event\plain\fs20\cf3 \cf2
  682. \par \par
  683. \pard \b\cf1 Match method example
  684. \par \plain\fs20\cf2
  685. \par \f1\b with\plain\f1\fs20\cf2 PerlRegEx1 \b do\plain\f1\fs20\cf2 \b begin\plain\f1\fs20\cf2
  686. \par RegEx := Edit1.Text;
  687. \par Subject := Edit2.Text;
  688. \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')
  689. \par \b else\plain\f1\fs20\cf2 ShowMessage('The regex you entered in Edit1 does not match the string in Edit2');
  690. \par \b end\plain\f1\fs20\cf2 ;\plain\fs20\cf2
  691. \par \par
  692. \pard \b\fs32\cf1 MatchAgain method
  693. \par \plain\fs16\cf2
  694. \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
  695. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  696. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2 class
  697. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  698. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  699. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 function\plain\f1\fs20\cf2 MatchAgain: Boolean;
  700. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  701. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  702. \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 .
  703. \par \par
  704. \pard \b\cf1 See also
  705. \par \plain\fs20\cf2
  706. \par \uldb \cf3 Match method\plain\fs20\cf3 \cf2
  707. \par \uldb \cf3 Start property\plain\fs20\cf3 \cf2
  708. \par \uldb \cf3 Stop property\plain\fs20\cf3 \cf4
  709. \par \uldb \cf3 OnMatch event\plain\fs20\cf3 \cf2
  710. \par \par
  711. \pard \b\cf1 MatchAgain method example
  712. \par \plain\fs20\cf2
  713. \par \f1\b with\plain\f1\fs20\cf2 PerlRegEx1 \b do\plain\f1\fs20\cf2 \b begin\plain\f1\fs20\cf2
  714. \par RegEx := Edit1.Text;
  715. \par Subject := Edit2.Text;
  716. \par \b if\plain\f1\fs20\cf2 Match \b then\plain\f1\fs20\cf2 \b begin\plain\f1\fs20\cf2
  717. \par I := 1;
  718. \par \b while\plain\f1\fs20\cf2 MatchAgain \b do\plain\f1\fs20\cf2 I := I + 1;
  719. \par ShowMessage(Format('The regular expression matched the subject string %d times.', [I]);
  720. \par \b end\plain\f1\fs20\cf2
  721. \par \b else\plain\f1\fs20\cf2
  722. \par ShowMessage('The regular expression did not match the subject string at all.');
  723. \par \b end\plain\f1\fs20\cf2 ;\plain\fs20\cf2
  724. \par \par
  725. \pard \b\fs32\cf1 NamedGroup method
  726. \par \plain\fs16\cf2
  727. \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
  728. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  729. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2 class
  730. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  731. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  732. \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;
  733. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  734. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  735. \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.
  736. \par \par
  737. \pard \b\cf1 See also
  738. \par \plain\fs20\cf2
  739. \par \uldb \cf3 GroupCount property\plain\fs20\cf3 \cf2
  740. \par \uldb \cf3 GroupLengths property\plain\fs20\cf3 \cf2
  741. \par \uldb \cf3 GroupOffsets property\plain\fs20\cf3 \cf2
  742. \par \uldb \cf3 Groups property\plain\fs20\cf3 \cf2
  743. \par \par
  744. \pard \b\cf1 NamedGroup method example
  745. \par \plain\fs20\cf2
  746. \par \f1\b with\plain\f1\fs20\cf2 PerlRegEx1 \b do\plain\f1\fs20\cf2 \b begin\plain\f1\fs20\cf2
  747. \par RegEx := '(?P<firstname>Joe|Jack|William|Avarell) did it';
  748. \par Subject := 'The sheriff told us that Joe did it.';
  749. \par \b if\plain\f1\fs20\cf2 Match \b then\plain\f1\fs20\cf2
  750. \par ShowMessage('Wanted: ' + Groups[NamedGroup('firstname')]);
  751. \par \b end\plain\f1\fs20\cf2 ;\plain\fs20\cf2
  752. \par \par
  753. \pard \b\fs32\cf1 Replace method
  754. \par \plain\fs16\cf2
  755. \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
  756. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  757. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2 class
  758. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  759. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  760. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 function\plain\f1\fs20\cf2 Replace: \b string\plain\f1\fs20\cf2 ;
  761. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  762. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  763. \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 .
  764. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  765. \par \par
  766. \pard \b\cf1 See also
  767. \par \plain\fs20\cf2
  768. \par \uldb \cf3 Replacement property\plain\fs20\cf3 \cf4
  769. \par \uldb \cf3 Subject property\plain\fs20\cf3 \cf4
  770. \par \uldb \cf3 ComputeReplacement method\plain\fs20\cf3 \cf4
  771. \par \uldb \cf3 Match method\plain\fs20\cf3 \cf4
  772. \par \uldb \cf3 MatchAgain method\plain\fs20\cf3 \cf4
  773. \par \uldb \cf3 ReplaceAll method\plain\fs20\cf3 \cf4
  774. \par \uldb \cf3 OnReplace event\plain\fs20\cf3 \cf2
  775. \par \par
  776. \pard \b\cf1 Replace method example
  777. \par \plain\fs20\cf2
  778. \par \f1\b with\plain\f1\fs20\cf2 PerlRegEx1 \b do\plain\f1\fs20\cf2 \b begin\plain\f1\fs20\cf2
  779. \par Subject := 'Bill loves Hillary';
  780. \par RegEx := 'Hillary';
  781. \par Replacement := 'Monica';
  782. \par \b if\plain\f1\fs20\cf2 Match \b then\plain\f1\fs20\cf2 Replace;
  783. \par ShowMessage(Subject); \i // "Bill loves Monica"\plain\f1\fs20\cf2
  784. \par \b end\plain\f1\fs20\cf2 ;\plain\fs20\cf2
  785. \par \par
  786. \pard \b\fs32\cf1 ReplaceAll method
  787. \par \plain\fs16\cf2
  788. \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
  789. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  790. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2 class
  791. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  792. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  793. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 function\plain\f1\fs20\cf2 ReplaceAll: Boolean;
  794. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  795. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  796. \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.
  797. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  798. \par \par
  799. \pard \b\cf1 See also
  800. \par \plain\fs20\cf2
  801. \par \uldb \cf3 RegEx property\plain\fs20\cf3 \cf2
  802. \par \uldb \cf3 Replacement property\plain\fs20\cf3 \cf2
  803. \par \uldb \cf3 Subject property\plain\fs20\cf3 \cf2
  804. \par \uldb \cf3 Match method\plain\fs20\cf3 \cf2
  805. \par \uldb \cf3 MatchAgain method\plain\fs20\cf3 \cf2
  806. \par \uldb \cf3 Replace method\plain\fs20\cf3 \cf4
  807. \par \uldb \cf3 OnReplace event\plain\fs20\cf3 \cf2
  808. \par \par
  809. \pard \b\cf1 ReplaceAll method example
  810. \par \plain\fs20\cf2
  811. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 ReplaceAll is the equivalent of:
  812. \par
  813. \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
  814. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Replace;
  815. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b while\plain\f1\fs20\cf2 MatchAgain \b do\plain\f1\fs20\cf2 Replace;
  816. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b end\plain\f1\fs20\cf2 ;\plain\fs20\cf2
  817. \par \par
  818. \pard \b\fs32\cf1 Split method
  819. \par \plain\fs16\cf2
  820. \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
  821. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  822. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2 class
  823. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  824. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  825. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 procedure\plain\f1\fs20\cf2 Split(Strings: TStrings; Limit: Integer);
  826. \par \plain\fs20\cf2
  827. \par \b\fs22 Description
  828. \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.
  829. \par \par
  830. \pard \b\cf1 See also
  831. \par \plain\fs20\cf2
  832. \par \uldb \cf3 RegEx property\plain\fs20\cf3 \cf2
  833. \par \uldb \cf3 Subject property\plain\fs20\cf3 \cf2
  834. \par \uldb \cf3 Match method\plain\fs20\cf3 \cf2
  835. \par \uldb \cf3 MatchAgain method\plain\fs20\cf3 \cf2
  836. \par
  837. \par \par
  838. \pard \b\cf1 Split method example
  839. \par \plain\fs20\cf2
  840. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 This example appends each item in the comma-delimited list in Edit1 to Memo1:
  841. \par
  842. \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
  843. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 RegEx := ',';
  844. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Subject := Edit1.Text;
  845. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Split(Memo1.Lines, 0);
  846. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b end\plain\f1\fs20\cf2 ;\plain\fs20\cf2
  847. \par \par
  848. \pard \b\fs32\cf1 StoreGroups method
  849. \par \plain\fs16\cf2
  850. \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
  851. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  852. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2 class
  853. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  854. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  855. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 procedure\plain\f1\fs20\cf2 StoreGroups;
  856. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  857. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  858. \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.
  859. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  860. \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.
  861. \par \par
  862. \pard \b\cf1 See also
  863. \par \plain\fs20\cf2
  864. \par \uldb \cf3 Groups property\plain\fs20\cf3 \cf2
  865. \par \uldb \cf3 Subject property\plain\fs20\cf3 \cf2
  866. \par \par
  867. \pard \b\cf1 StoreGroups method example
  868. \par \plain\fs20\cf2
  869. \par The first example displays "Nobody wanted":
  870. \par
  871. \par \f1 S := 'The sheriff told us that Joe did it.';
  872. \par \b with\plain\f1\fs20\cf2 PerlRegEx1 \b do\plain\f1\fs20\cf2 \b begin\plain\f1\fs20\cf2
  873. \par RegEx := '(Joe|Jack|William|Avarell) did it';
  874. \par Subject := S;
  875. \par \b if\plain\f1\fs20\cf2 Match \b then\plain\f1\fs20\cf2 \b begin\plain\f1\fs20\cf2
  876. \par Subject := ''; \i // Save memory\plain\f1\fs20\cf2
  877. \par \b if\plain\f1\fs20\cf2 RegEx.GroupCount = 1 \b then\plain\f1\fs20\cf2
  878. \par S := 'Wanted: ' + RegEx.Groups[1]
  879. \par \b else\plain\f1\fs20\cf2
  880. \par S := 'Nobody wanted';
  881. \par ShowMessage(S);
  882. \par \pard \b end\plain\f1\fs20\cf2 ;
  883. \par \b end\plain\f1\fs20\cf2 ;
  884. \par
  885. \par \plain\fs20\cf2 The second example displays "Wanted: Joe".
  886. \par
  887. \par \f1 S := 'The sheriff told us that Joe did it.';
  888. \par \b with\plain\f1\fs20\cf2 PerlRegEx1 \b do\plain\f1\fs20\cf2 \b begin\plain\f1\fs20\cf2
  889. \par RegEx := '(Joe|Jack|William|Avarell) did it';
  890. \par Subject := S;
  891. \par \b if\plain\f1\fs20\cf2 Match \b then\plain\f1\fs20\cf2 \b begin\plain\f1\fs20\cf2
  892. \par RegEx.StoreGroups;
  893. \par Subject := ''; \i // Save memory\plain\f1\fs20\cf2
  894. \par \b if\plain\f1\fs20\cf2 RegEx.GroupCount = 1 \b then\plain\f1\fs20\cf2
  895. \par S := 'Wanted: ' + RegEx.Groups[1]
  896. \par \b else\plain\f1\fs20\cf2
  897. \par S := 'Nobody wanted';
  898. \par \pard ShowMessage(S);
  899. \par \b end\plain\f1\fs20\cf2 ;
  900. \par \b end\plain\f1\fs20\cf2 ;\plain\fs20\cf2
  901. \par \par
  902. \pard \b\fs32\cf1 Study method
  903. \par \plain\fs16\cf2
  904. \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
  905. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  906. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2 class
  907. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  908. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  909. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 procedure\plain\f1\fs20\cf2 Study;
  910. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  911. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  912. \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.
  913. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Call study if you will be using the same regex many times.
  914. \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.
  915. \par \par
  916. \pard \b\cf1 See also
  917. \par \plain\fs20\cf2
  918. \par \uldb \cf3 Compiled property\plain\fs20\cf3 \cf2
  919. \par \uldb \cf3 Studied property\plain\fs20\cf3 \cf2
  920. \par \uldb \cf3 Compile method\plain\fs20\cf3 \cf2
  921. \par \par
  922. \pard \b\cf1 Study method example
  923. \par \plain\fs20\cf2
  924. \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.
  925. \par
  926. \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
  927. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 RegEx := Edit1.Text;
  928. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Study;
  929. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Subject := Memo1.Lines.Text;
  930. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Replacement := Edit2.Text;
  931. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 ReplaceAll;
  932. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Memo1.Lines.Text := Subject;
  933. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b end\plain\f1\fs20\cf2 ;\plain\fs20\cf2
  934. \par \par
  935. \pard \b\fs32\cf1 OnMatch event
  936. \par \plain\fs16\cf2
  937. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2
  938. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  939. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2 class
  940. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  941. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  942. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2 OnMatch: TNotifyEvent;
  943. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  944. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  945. \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.
  946. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  947. \par \par
  948. \pard \b\cf1 See also
  949. \par \plain\fs20\cf2
  950. \par \uldb \cf3 Match method\plain\fs20\cf3 \cf2
  951. \par \uldb \cf3 MatchAgain method\plain\fs20\cf3 \cf2
  952. \par \par
  953. \pard \b\fs32\cf1 OnReplace event
  954. \par \plain\fs16\cf2
  955. \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
  956. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  957. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegEx\plain\fs20\cf3 \cf2 class
  958. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  959. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  960. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2 OnReplace: \uldb \cf3 TPerlRegExReplaceEvent\plain\f1\fs20\cf3 \cf2 ;
  961. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  962. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  963. \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.
  964. \par \par
  965. \pard \b\cf1 See also
  966. \par \plain\fs20\cf2
  967. \par \uldb \cf3 Replacement property\plain\fs20\cf3 \cf4
  968. \par \uldb \cf3 ComputeReplacement method\plain\fs20\cf3 \cf4
  969. \par \uldb \cf3 Replace method\plain\fs20\cf3 \cf4
  970. \par \uldb \cf3 ReplaceAll method\plain\fs20\cf3 \cf2
  971. \par \par
  972. \pard \b\cf1 OnReplace event example
  973. \par \plain\fs20\cf2
  974. \par \f1\b with\plain\f1\fs20\cf2 PerlRegEx1 \b do\plain\f1\fs20\cf2 \b begin\plain\f1\fs20\cf2
  975. \par RegEx := 'Borland|Inprise|Microsoft';
  976. \par Subject := Edit1.Text;
  977. \par ReplaceAll;
  978. \par Edit1.Text := Subject;
  979. \par \b end\plain\f1\fs20\cf2 ;
  980. \par
  981. \par \b procedure\plain\f1\fs20\cf2 TForm1.PerlRegEx1Replace(Sender: TObject; \b var\plain\f1\fs20\cf2 ReplaceWith: \b string\plain\f1\fs20\cf2 );
  982. \par \b begin\plain\f1\fs20\cf2
  983. \par \b if\plain\f1\fs20\cf2 PerlRegEx1.Match = 'Inprise' \b then\plain\f1\fs20\cf2 ReplaceWith := 'Borland'
  984. \par \b else\plain\f1\fs20\cf2 \b if\plain\f1\fs20\cf2 PerlRegEx1.Match = 'Borland' \b then\plain\f1\fs20\cf2 ReplaceWith := ':-)'
  985. \par \pard \b else\plain\f1\fs20\cf2 ReplaceWith := ':-('
  986. \par \b end\plain\f1\fs20\cf2 ;\plain\fs20\cf2
  987. \par \par
  988. \pard \b\fs32\cf1 TPerlRegExList class
  989. \par \plain\fs16\cf2
  990. \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
  991. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Unit
  992. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 PerlRegEx\plain\fs20\cf3 \cf2
  993. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  994. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  995. \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|...
  996. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  997. \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.
  998. \par \par
  999. \pard \b\cf1 See also
  1000. \par \plain\fs20\cf2
  1001. \par \uldb \cf3 TPerlRegEx class\plain\fs20\cf3 \cf2
  1002. \par \par
  1003. \pard \b\cf1 Properties
  1004. \par \plain\fs20\cf2
  1005. \par \pard\tx195\tx635 \uldb \cf3 Count\plain\fs20\cf3 \cf2
  1006. \par \uldb \cf3 MatchedRegEx\plain\fs20\cf3 \cf2
  1007. \par \uldb \cf3 RegEx\plain\fs20\cf3 \cf2
  1008. \par \uldb \cf3 Start\plain\fs20\cf3 \cf2
  1009. \par \uldb \cf3 Stop\plain\fs20\cf3 \cf2
  1010. \par \uldb \cf3 Subject\plain\fs20\cf3 \cf2
  1011. \par
  1012. \par \par
  1013. \pard \b\cf1 Methods
  1014. \par \plain\fs20\cf2
  1015. \par \cf4 {\field {\*\fldinst import bm0.BMP}}\cf2 Key methods
  1016. \par \pard\tx195\tx635 \uldb \cf3 Add\plain\fs20\cf3 \cf2
  1017. \par \uldb \cf3 IndexOf\plain\fs20\cf3 \cf2
  1018. \par \uldb \cf3 Match\plain\fs20\cf3 \cf2
  1019. \par \uldb \cf3 MatchAgain\plain\fs20\cf3 \cf2
  1020. \par \uldb \cf3 Clear\plain\fs20\cf3 \cf2
  1021. \par \uldb \cf3 Delete\plain\fs20\cf3 \cf2
  1022. \par \uldb \cf3 Insert\plain\fs20\cf3 \cf2
  1023. \par
  1024. \par \par
  1025. \pard \b\fs32\cf1 Count property
  1026. \par \plain\fs16\cf2
  1027. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22
  1028. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  1029. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegExList\plain\fs20\cf3 \cf2 class
  1030. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  1031. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  1032. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2 Count: Integer;
  1033. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  1034. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  1035. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 Number of \uldb \cf3 TPerlRegEx\plain\fs20\cf3 \cf2 objects in the list.
  1036. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Read-only.
  1037. \par \par
  1038. \pard \b\fs32\cf1 MatchedRegEx property
  1039. \par \plain\fs16\cf2
  1040. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2
  1041. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  1042. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegExList\plain\fs20\cf3 \cf2 class
  1043. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  1044. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  1045. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2 MatchedRegEx: TPerlRegEx;
  1046. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  1047. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  1048. \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.
  1049. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Read-only.
  1050. \par \par
  1051. \pard \b\cf1 See also
  1052. \par \plain\fs20\cf2
  1053. \par \uldb \cf3 Match method\plain\fs20\cf3 \cf2
  1054. \par \uldb \cf3 MatchAgain method\plain\fs20\cf3 \cf2
  1055. \par \par
  1056. \pard \b\fs32\cf1 RegEx property
  1057. \par \plain\fs16\cf2
  1058. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2
  1059. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  1060. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegExList\plain\fs20\cf3 \cf2 class
  1061. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  1062. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  1063. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2 RegEx[Index: Integer]: TPerlRegEx;
  1064. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  1065. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  1066. \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.
  1067. \par \par
  1068. \pard \b\cf1 See also
  1069. \par \plain\fs20\cf2
  1070. \par \uldb \cf3 Count property\plain\fs20\cf3 \strike
  1071. \par \uldb \plain\uldb\fs20\cf3 Add method\plain\fs20\cf3 \cf2
  1072. \par \par
  1073. \pard \b\fs32\cf1 Start property
  1074. \par \plain\fs16\cf2
  1075. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2
  1076. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  1077. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegExList\plain\fs20\cf3 \cf2 class
  1078. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  1079. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  1080. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2 Start: Integer;
  1081. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  1082. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  1083. \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.
  1084. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  1085. \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.
  1086. \par \par
  1087. \pard \b\cf1 See also
  1088. \par \plain\fs20\cf2
  1089. \par \uldb \cf3 Stop property\plain\fs20\cf3 \cf2
  1090. \par \uldb \cf3 Subject property\plain\fs20\cf3 \cf2
  1091. \par \uldb \cf3 MatchAgain method\plain\fs20\cf3 \cf2
  1092. \par \par
  1093. \pard \b\fs32\cf1 Stop property
  1094. \par \plain\fs16\cf2
  1095. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2
  1096. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  1097. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegExList\plain\fs20\cf3 \cf2 class
  1098. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  1099. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  1100. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2 Stop: Integer;
  1101. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  1102. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  1103. \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.
  1104. \par \par
  1105. \pard \b\cf1 See also
  1106. \par \plain\fs20\cf2
  1107. \par \uldb \cf3 Start property\plain\fs20\cf3 \cf2
  1108. \par \uldb \cf3 Subject property\plain\fs20\cf3 \cf2
  1109. \par \uldb \cf3 Match method\plain\fs20\cf3 \cf2
  1110. \par \uldb \cf3 MatchAgain method\plain\fs20\cf3 \cf2
  1111. \par \par
  1112. \pard \b\fs32\cf1 Subject property
  1113. \par \plain\fs16\cf2
  1114. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2
  1115. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  1116. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegExList\plain\fs20\cf3 \cf2 class
  1117. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  1118. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  1119. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 property\plain\f1\fs20\cf2 Subject: \b string\plain\f1\fs20\cf2 ;
  1120. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  1121. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  1122. \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.
  1123. \par \par
  1124. \pard \b\cf1 See also
  1125. \par \plain\fs20\cf2
  1126. \par \uldb \cf3 Add method\plain\fs20\cf3 \strike
  1127. \par \uldb \plain\uldb\fs20\cf3 Match method\plain\fs20\cf3 \cf2
  1128. \par \uldb \cf3 MatchAgain method\plain\fs20\cf3 \cf2
  1129. \par \par
  1130. \pard \b\fs32\cf1 Add method
  1131. \par \plain\fs16\cf2
  1132. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2
  1133. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  1134. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegExList\plain\fs20\cf3 \cf2 class
  1135. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  1136. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  1137. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 function\plain\f1\fs20\cf2 Add(ARegEx: TPerlRegEx): Integer;
  1138. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  1139. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  1140. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 Add a regular expression to the list.
  1141. \par \par
  1142. \pard \b\cf1 See also
  1143. \par \plain\fs20\cf2
  1144. \par \uldb \cf3 Delete method\plain\fs20\cf3 \cf2
  1145. \par \uldb \cf3 Insert method\plain\fs20\cf3 \cf2
  1146. \par \par
  1147. \pard \b\fs32\cf1 IndexOf method
  1148. \par \plain\fs16\cf2
  1149. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2
  1150. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  1151. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegExList\plain\fs20\cf3 \cf2 class
  1152. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  1153. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  1154. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 function\plain\f1\fs20\cf2 IndexOf(ARegEx: TPerlRegEx): Integer;
  1155. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  1156. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  1157. \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.
  1158. \par \par
  1159. \pard \b\cf1 See also
  1160. \par \plain\fs20\cf2
  1161. \par \uldb \cf3 Add method\plain\fs20\cf3 \cf2
  1162. \par \uldb \cf3 Delete method\plain\fs20\cf3 \cf2
  1163. \par \uldb \cf3 Insert method\plain\fs20\cf3 \cf2
  1164. \par \par
  1165. \pard \b\fs32\cf1 Match method
  1166. \par \plain\fs16\cf2
  1167. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2
  1168. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  1169. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegExList\plain\fs20\cf3 \cf2 class
  1170. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  1171. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  1172. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 function\plain\f1\fs20\cf2 Match: Boolean;
  1173. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  1174. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  1175. \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.
  1176. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  1177. \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.
  1178. \par \par
  1179. \pard \b\cf1 See also
  1180. \par \plain\fs20\cf2
  1181. \par \uldb \cf3 MatchedRegEx property\plain\fs20\cf3 \strike
  1182. \par \uldb \plain\uldb\fs20\cf3 MatchAgain method\plain\fs20\cf3 \cf2
  1183. \par \par
  1184. \pard \b\fs32\cf1 MatchAgain method
  1185. \par \plain\fs16\cf2
  1186. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2
  1187. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  1188. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegExList\plain\fs20\cf3 \cf2 class
  1189. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  1190. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  1191. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 function\plain\f1\fs20\cf2 MatchAgain: Boolean;
  1192. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  1193. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  1194. \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 .
  1195. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  1196. \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.
  1197. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  1198. \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 .
  1199. \par \par
  1200. \pard \b\cf1 See also
  1201. \par \plain\fs20\cf2
  1202. \par \uldb \cf3 MatchedRegEx property\plain\fs20\cf3 \cf2
  1203. \par \uldb \cf3 Start property\plain\fs20\cf3 \cf2
  1204. \par \uldb \cf3 Stop property\plain\fs20\cf3 \cf2
  1205. \par \uldb \cf3 Match method\plain\fs20\cf3 \cf2
  1206. \par \par
  1207. \pard \b\fs32\cf1 Clear method
  1208. \par \plain\fs16\cf2
  1209. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2
  1210. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  1211. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegExList\plain\fs20\cf3 \cf2 class
  1212. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  1213. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  1214. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 procedure\plain\f1\fs20\cf2 Clear;
  1215. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  1216. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  1217. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 Removes all regular expressions from the list. The TPerlRegEx objects are NOT freed.
  1218. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  1219. \par \par
  1220. \pard \b\cf1 See also
  1221. \par \plain\fs20\cf2
  1222. \par \uldb \cf3 Delete method\plain\fs20\cf3 \cf2
  1223. \par \par
  1224. \pard \b\fs32\cf1 Delete method
  1225. \par \plain\fs16\cf2
  1226. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2
  1227. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  1228. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegExList\plain\fs20\cf3 \cf2 class
  1229. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  1230. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  1231. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 procedure\plain\f1\fs20\cf2 Delete(Index: Integer);
  1232. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  1233. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  1234. \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.
  1235. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  1236. \par \par
  1237. \pard \b\cf1 See also
  1238. \par \plain\fs20\cf2
  1239. \par \uldb \cf3 Add method\plain\fs20\cf3 \cf2
  1240. \par \uldb \cf3 Clear method\plain\fs20\cf3 \cf2
  1241. \par \par
  1242. \pard \b\fs32\cf1 Insert method
  1243. \par \plain\fs16\cf2
  1244. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2
  1245. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Applies to
  1246. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 TPerlRegExList\plain\fs20\cf3 \cf2 class
  1247. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  1248. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  1249. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 procedure\plain\f1\fs20\cf2 Insert(Index: Integer; ARegEx: TPerlRegEx);
  1250. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  1251. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  1252. \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.
  1253. \par \par
  1254. \pard \b\cf1 See also
  1255. \par \plain\fs20\cf2
  1256. \par \uldb \cf3 Add method\plain\fs20\cf3 \cf2
  1257. \par \uldb \cf3 Match method\plain\fs20\cf3 \cf2
  1258. \par \par
  1259. \pard \b\fs32\cf1 TPerlRegExOptions type
  1260. \par \plain\fs16\cf2
  1261. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2
  1262. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Unit
  1263. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 PerlRegEx\plain\fs20\cf3 \cf2
  1264. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  1265. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  1266. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 type\plain\f1\fs20\cf2
  1267. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 TPerlRegExOptions = \b set\plain\f1\fs20\cf2 \b of\plain\f1\fs20\cf2 (
  1268. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 preCaseLess, \i // /i -> Case insensitive\plain\f1\fs20\cf2
  1269. \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
  1270. \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
  1271. \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
  1272. \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
  1273. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 preDollarEndOnly, \i // /E\plain\f1\fs20\cf2
  1274. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 preExtra, \i // /X\plain\f1\fs20\cf2
  1275. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 preUnGreedy \i // Repeat operators (+, *, ?) are not greedy by default\plain\f1\fs20\cf2
  1276. \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
  1277. \par \plain\fs20\cf2
  1278. \par \par
  1279. \pard \b\cf1 See also
  1280. \par \plain\fs20\cf2
  1281. \par \uldb \cf3 TPerlRegEx class\plain\fs20\cf3 \cf4
  1282. \par \uldb \cf3 Options property\plain\fs20\cf3 \cf2
  1283. \par \par
  1284. \pard \b\fs32\cf1 TPerlRegExReplaceEvent type
  1285. \par \plain\fs16\cf2
  1286. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2
  1287. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Unit
  1288. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 PerlRegEx\plain\fs20\cf3 \cf2
  1289. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  1290. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  1291. \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 ;
  1292. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  1293. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  1294. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2 TPerlRegEx.\uldb \cf3 OnReplace\plain\fs20\cf3 \cf2 event type.
  1295. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  1296. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Sender is the calling \uldb \cf3 TPerlRegEx object\plain\fs20\cf3 \cf2 .
  1297. \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.
  1298. \par \par
  1299. \pard \b\cf1 See also
  1300. \par \plain\fs20\cf2
  1301. \par \uldb \cf3 TPerlRegEx class\plain\fs20\cf3 \cf2
  1302. \par \uldb \cf3 OnReplace event\plain\fs20\cf3 \cf2
  1303. \par \par
  1304. \pard \b\fs32\cf1 TPerlRegExState type
  1305. \par \plain\fs16\cf2
  1306. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \ul \ul\cf3 See also\plain\fs16\cf3 \b\fs22\cf2
  1307. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Unit
  1308. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 PerlRegEx\plain\fs20\cf3 \cf2
  1309. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  1310. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  1311. \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 (
  1312. \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
  1313. \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
  1314. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 preNotEmpty \i // Empty matches not allowed\plain\f1\fs20\cf2
  1315. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 );
  1316. \par \plain\fs20\cf2
  1317. \par \par
  1318. \pard \b\cf1 See also
  1319. \par \plain\fs20\cf2
  1320. \par \uldb \cf3 TPerlRegEx class\plain\fs20\cf3 \cf2
  1321. \par \uldb \cf3 State property\plain\fs20\cf3 \cf2
  1322. \par \par
  1323. \pard \b\fs32\cf1 MAX_GroupS constant
  1324. \par \plain\fs16\cf2
  1325. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22
  1326. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 Unit
  1327. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \uldb \plain\uldb\fs20\cf3 PerlRegEx\plain\fs20\cf3 \cf2
  1328. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635
  1329. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Declaration
  1330. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \f1\fs20 const\plain\f1\fs20\cf2 MAX_GroupS = 99
  1331. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \plain\fs20\cf2
  1332. \par \pard\tx1435\tx2875\tx4315\tx5755\tx7195\tx8635 \b\fs22 Description
  1333. \par \pard \plain\fs20\cf2 Maximum number of capturing groups you can use in your regular expression.}