Skip to content

Releases: andgineer/TRegExpr

1.182

02 Dec 12:17
Compare
Choose a tag to compare
version

1.155

04 May 04:56
c992f9f
Compare
Choose a tag to compare

v. 1.155 2022.04.28
-=- (-) Fix Substitute() result for not-real group index like '$9' in regex '(b)'.
By Alexey Torgashin.
-=- (-) Fix UnQuoteChar() range check for Substitute() call.
By @delphicz and Alexey T.

v. 1.153 2021.07.04
-=- (^) Compatability with Delphi 7. By Alexey Torgashin.

v. 1.152 2021.05.26
-=- (-) Fix match empty strings (e.g. by '^$'). By Alexey Torgashin.

v. 1.151 2021.03.24
-=- (-) Fix for Substitute method and named groups. By @chrisgch.

v. 1.150 2021.02.08
-=- (-) Setters of Modifier* properties now invalidate the opcode.

v. 1.149 2021.01.08
-=- (-) Allow underscore char to be escaped '_'. Other word-chars are
not allowed. By Alexey Torgashin.

v. 1.148 2020.09.29
-=- (-) Fixed broken ^ and $ if UseLinePairedBreak=False.
By Alexey Torgashin.

v. 1.147 2020.09.13
-=- (+) Added support for negative lookbehind: (?<!foo)bar.
-=- (^) Added IsFixedLength() to detect regex with fixed length match.
-=- (^) Added IsCompiled().
By Alexey Torgashin.

v. 1.144 2020.09.02
-=- (^) Rework handling of paired CR LF: simplified code, removed
prop LinePairedSeparator (str), added prop UseLinePairedBreak (bool),
it works faster.
-=- (^) Removed prop ReplaceLineBreakFromOS, added instead ReplaceLineBreak.
-=- (+) Added global vars: RegExprUsePairedBreak, RegExprReplaceLineBreak.
-=- (+) Added global vars: RegExprLookaheadIsAtomic, RegExprLookbehindIsAtomic.
By Alexey Torgashin.

v. 1.138 2020.09.01
-=- (+) Added \z which matches at the very ending. \Z is changed: it matches
also before the final line-break. Like in major engines.
-=- (^) Remove ifdef UnicodeWordDetection, because it needs code which
is compiler specific (FPC/Delphi) and hard to support. Unicode is supported
better with existing ifdef FastUnicodeData.
By Alexey Torgashin.

v. 1.130 2020.08.31
-=- (+) Support Perl syntax for named groups: (?'name'expr) and
subroutine calls via (?&name).
-=- (^) Added compile error code for unknown meta-chars (like \X \E \z).
By Alexey Torgashin.

v. 1.128 2020.08.31
-=- (+) Added recursion: (?R) with alias (?0).
-=- (+) Added subroutine calls: (?1) ... (?80), and for named groups: (?P>name).
-=- (+) Added possessive quantifier: a++, a*+, a?+, a{n,m}+ for simple braces.
Not for complex braces yet: (expr){n,m}+.
By Alexey Torgashin.

v. 1.116 2020.08.26
-=- (+) Added ifdef UnicodeEx, to support unicode chars >0xFFFF, e.g.
emojis. Because '.', '\W', '\S' etc must catch 2 WideChars of 1 emoji.
-=- (^) Added ifdef UseLineSep, to enable LineSeparators property.
When turned off (default) it makes Unicode mode faster matching ".".
By Alexey Torgashin.

v. 1.111 2020.08.24
-=- (+) Support atomic groups: (?>...).
-=- (+) Support negative lookahead: aa(?!bb).
-=- (^) Add compile error code for unsupported char after '?' in (?...)
By Alexey Torgashin.

v. 1.106 2020.08.18
-=- (+) Support Unicode categories: \pL \p{L} \p{Lu}, and negative
variant with \P. Both inside char-classes and outside them.
Allowed categories: https://www.compart.com/en/unicode/category/
Requires define FastUnicodeData.
By Alexey Torgashin.

v. 1.101 2020.08.05
-=- (+) Support named groups like in Python: (?Pregex), and back-refs
to named groups: (?P=name).
-=- (+) Public method MatchIndexFromName
-=- (+) Public method MatchFromName
-=- (+) Support positive lookahead: foo(?=bar)
-=- (+) Support positive lookbehind: (?<=foo)bar
-=- (+) Support Substitute with named groups: ${name}
Added tests.
By Alexey Torgashin.

v. 0.995 2020.06.21
-=- (^) Deleted prop InvertCase and global variable for this purpose,
seems no one needs it anymore. By Alexey Torgashin.

v. 0.994 2020.06.11
-=- (+) Added define FastUnicodeData, which uses additional arrays
(size=320K) to speedup unicode functions in Unicode mode.
Added unit regexpr_unicodedata.
By Alexey Torgashin.

v. 0.993 2020.06.08
-=- (-) Fixed crash in Substitute() if template str is just '$'.
By Alexey Torgashin.

v. 0.992 2020.06.01
-=- (+) Added backward search possibility: ABackward param in
ExecPrim, ExecPos, ExecNext. It was tested in CudaText editor.
By Alexey Torgashin.

v. 0.991 2020.05.15
-=- (-) Fixed incorrect opcode for correct regex "[.-]".
By Alexey Torgashin.

v. 0.990 2020.05.11
-=- (-) Fixed finding some count of simple chars, e.g. "a+", "a{2,5}".
-=- (-) Fixed PtrInt type for Delphi, should be NativeInt.
By Alexey Torgashin.

v. 0.989 2020.03.26
-=- (-) Fixed compilation on D2009

v. 0.988 2020.02.15
-=- (^) Don't raise error "empty input string", it breaks some apps.
By Alexey Torgashin.

v. 0.987 2020.01.09
-=- (+) Added property SlowChecksSizeMax. Slow checks are used only
in Exec(), and not in Exec(AOffset), ExecPos(), ExecNext.
-=- (^) Fixed big slowdown in Exec/ExecPos (call of IsProgrammOk),
which affected test_benchmark a lot. By Alexey Torgashin.
-=- (^) Raise error if incorrect {} braces were found in expression.
By Alexey Torgashin.
-=- (^) Optimize opcode for [a-c] ranges: avoid redundant EXACTLY.
By Alexey Torgashin.
-=- (^) Added test_benchmark (for FreePascal). Taken from Lazarus forum.

v. 0.975 2019.12.25
-=- (^) Better support NULL chars in InputString.
-=- (^) Improved opcode for EXACTLY: store length to opcode. 15 years old
ToDo item. By Alexey Torgashin.

v. 0.973 2019.12.23
-=- (+) Added ExecPos(AOffset, ATryOnce) - new param ATryOnce is to try
matching at AOffset, without advancing to next positions. Useful for syntax
parsers like in CudaText. By Alexey Torgashin.
-=- (+) Added demo test_dlg to show Dump() result.
-=- (+) Added demo test_dlg_speed which shows goodness of ExecPos(..ATryOnce).
-=- (+) Restored work of FirstCharSet optimization (adapted to new opcode).
Now define UseFirstCharSet is on by default and works in Unicode mode too!
By Alexey Torgashin.
-=- (^) Fixed Dump() for new opcode in char classes.

v. 0.967 2019.12.18
-=- (+) Reworked opcode for char-classes [], now opcode is stored as pairs
(Kind,Data), which allows to have null-char in char-classes, and have
meta-classes \W \D \S \V \H in char-classes. By Alexey Torgashin.

v. 0.964 2019.12.12
-=- (^) Add define UseWordChars (off by default): allows property WordChars.
-=- (^) Add define UseSpaceChars (off by default): allows property SpaceChars.
By Alexey Torgashin.

v. 0.962 2019.12.08
-=- (^) Ifdef UnicodeWordDetection works also on Delphi 2009+.
By Alexey Torgashin.
-=- (^) Property UseUnicodeWordDetection default changed to True.
-=- (^) In Unicode mode on Delphi 2009+, UnicodeString type is used.
-=- (^) Formatted regexpr.pas using Embarcadero Delphi Formatter.exe.

v. 0.960 2019.12.03
-=- (+) Support \V, \H (counterparts to \v, \h). By Alexey Torgashin.
-=- (+) Support control escape sequences \cA...\cZ. By Alexey Torgashin.
-=- (+) Expression can contain NULL chars. By Alexey Torgashin.

v. 0.957 2019.11.23
-=- (+) InputString can contain NULL chars. By Alexey Torgashin.
-=- (^) Rework UpperCase/LowerCase/InvertCase for FPC+Delphi.
By Alexey Torgashin.

v. 0.955 2019.11.20
-=- (+) Support meta chars \v (vertical white space), \h (horizontal
white space). By Alexey Torgashin.

v. 0.954 2019.11.14
-=- (^) Changed type of InputString, Expression from PChar to string.
By Alexey Torgashin.
-=- (+) Support non-capturing groups (?:...). By Alexey Torgashin.

0.952b

15 Feb 13:19
Compare
Choose a tag to compare

(+) FreePascal support, thanks to Yaroslav Romanchenko (SAGE)

0.951

17 Jan 13:14
Compare
Choose a tag to compare

minor bug fixes