anchor.diff:    end;
   end;
   
  +(*
  +//it is slower that with ec_RegExpr
   function SRegexMatchesString(const AStr, AStrRegex: string; ACaseSensitive: boolean): boolean;
   var
     Obj: TRegExpr;
  
positive.code:       Obj.ModifierS:= false;
        Obj.ModifierI:= not ACaseSensitive;
        Obj.Expression:= AStrRegex;
        Result:= Obj.Exec(AStr) and (Obj.MatchLen[0]=Length(AStr));
      except
      end;
    finally
      Obj.Free;
    end;
  
negative.code: function STextListsAllWords(SText, SWords: string): boolean;
  function STextListsFuzzyInput(const SText, SFind: string): boolean;
  function SRegexReplaceSubstring(const AStr, AStrFind, AStrReplace: string; AUseSubstitute: boolean): string;
  function SRegexMatchesString(const ASubject, ARegex: string; ACaseSensitive: boolean): boolean;
  
  function IsLexerListed(const ALexer, ANameList: string): boolean;
  function IsFilenameListedInExtensionList(const AFilename, AExtList: string): boolean;
  