anchor.diff:    LazFileUtils,
     at__jsonconf,
     ATStringProc,
  -  ATSynEdit_RegExpr;
  +  ATSynEdit_RegExpr,
  +  ec_RegExpr;
   
   type
     TStringReplacePart = record
  
positive.code:   end;
  end;
  
  function SRegexMatchesString(const ASubject, ARegex: string; ACaseSensitive: boolean): boolean;
  var
    Obj: TRegExpr;
  
negative.code:     Obj.ModifierM:= true; //allow to work with ^$
      Obj.ModifierX:= false; //don't ingore spaces
      Result:= Obj.Exec(ASubject) and (Obj.MatchPos[0]=1);
    finally
      Obj.Free;
    end;
  end;
  *)
  
  function SRegexMatchesString(const ASubject, ARegex: string; ACaseSensitive: boolean): boolean;
  var
    Obj: TecRegExpr;
    NPos: integer;
  begin
    Obj:= TecRegExpr.Create;
    try
      Obj.Expression:= UTF8Decode(ARegex);
      Obj.ModifierI:= not ACaseSensitive;
      Obj.ModifierS:= false; //don't catch all text by .*
      Obj.ModifierM:= true; //allow to work with ^$
      Obj.ModifierX:= false; //don't ingore spaces
      NPos:= 1;
      Result:= Obj.Match(UTF8Decode(ASubject), NPos);
    finally
      Obj.Free;
    end;
  