|
@@ -0,0 +1,43 @@
|
|
|
+
|
|
|
+program project1;
|
|
|
+// Run the following to cause an access violation
|
|
|
+//
|
|
|
+// ./project1 'as.*0' 'ascii_lf1'
|
|
|
+//
|
|
|
+
|
|
|
+{$mode objfpc}{$H+}
|
|
|
+
|
|
|
+uses
|
|
|
+ regex,
|
|
|
+ SysUtils;
|
|
|
+
|
|
|
+var
|
|
|
+ re : TRegexEngine;
|
|
|
+ aErrorPos : integer;
|
|
|
+ aErrorCode: TRegexError;
|
|
|
+ MatchPos : integer;
|
|
|
+ Offset : integer;
|
|
|
+ s1,s2 : string;
|
|
|
+begin
|
|
|
+ s1:='as.*0';
|
|
|
+ s2:='ascii_lf1';
|
|
|
+ try
|
|
|
+ WriteLn('Regex: Trim(s1) = >>'+Trim(s1)+'<<');
|
|
|
+ WriteLn('Test: Trim(s2) = >>'+Trim(s2)+'<<');
|
|
|
+ re := TRegexEngine.Create(Trim(s1));
|
|
|
+ if re.Parse(aErrorPos,aErrorCode) then begin
|
|
|
+ Offset := 1;
|
|
|
+ if re.MatchString(s2,MatchPos,Offset) then begin
|
|
|
+ WriteLn('Match');
|
|
|
+ end else begin
|
|
|
+ WriteLn('No Match');
|
|
|
+ end;
|
|
|
+ end else begin
|
|
|
+ WriteLn('Parse Failed');
|
|
|
+ end;
|
|
|
+ except
|
|
|
+ on E : Exception do begin
|
|
|
+ WriteLn('Exception: '+E.Message);
|
|
|
+ end;
|
|
|
+ end;
|
|
|
+end.
|