mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-02 03:32:04 +02:00
parent
b776d48367
commit
35c5479f96
@ -2951,6 +2951,7 @@ var
|
||||
Len: integer;
|
||||
SavedPtr: PRegExprChar;
|
||||
EnderChar, TempChar: REChar;
|
||||
DashForRange: Boolean;
|
||||
begin
|
||||
Result := nil;
|
||||
flags := 0;
|
||||
@ -3008,8 +3009,18 @@ begin
|
||||
|
||||
while (regparse < fRegexEnd) and (regparse^ <> ']') do
|
||||
begin
|
||||
if (regparse^ = '-') and ((regparse + 1) < fRegexEnd) and
|
||||
((regparse + 1)^ <> ']') and CanBeRange then
|
||||
// last '-' inside [] treated as simple dash
|
||||
if (regparse^ = '-') and
|
||||
((regparse + 1) < fRegexEnd) and
|
||||
((regparse + 1)^ = ']') then
|
||||
begin
|
||||
EmitRangeChar('-', False);
|
||||
Inc(regparse);
|
||||
Break;
|
||||
end;
|
||||
|
||||
// char '-' which (maybe) makes a range
|
||||
if (regparse^ = '-') and ((regparse + 1) < fRegexEnd) and CanBeRange then
|
||||
begin
|
||||
Inc(regparse);
|
||||
RangeEnd := regparse^;
|
||||
@ -3085,12 +3096,22 @@ begin
|
||||
else
|
||||
begin
|
||||
TempChar := UnQuoteChar(regparse);
|
||||
EmitRangeChar(TempChar, (regparse + 1)^ = '-');
|
||||
// False if '-' is last char in []
|
||||
DashForRange :=
|
||||
(regparse + 2 < fRegexEnd) and
|
||||
((regparse + 1)^ = '-') and
|
||||
((regparse + 2)^ <> ']');
|
||||
EmitRangeChar(TempChar, DashForRange);
|
||||
end;
|
||||
end
|
||||
else
|
||||
begin
|
||||
EmitRangeChar(regparse^, (regparse + 1)^ = '-');
|
||||
// False if '-' is last char in []
|
||||
DashForRange :=
|
||||
(regparse + 2 < fRegexEnd) and
|
||||
((regparse + 1)^ = '-') and
|
||||
((regparse + 2)^ <> ']');
|
||||
EmitRangeChar(regparse^, DashForRange);
|
||||
end;
|
||||
Inc(regparse);
|
||||
end;
|
||||
@ -4468,7 +4489,7 @@ begin
|
||||
end;
|
||||
SetLength(Result, ResultLen);
|
||||
// Fill Result
|
||||
ResultPtr := Pointer(Result);
|
||||
ResultPtr := PRegExprChar(Result);
|
||||
p := TemplateBeg;
|
||||
Mode := smodeNormal;
|
||||
while p < TemplateEnd do
|
||||
|
Loading…
Reference in New Issue
Block a user