protected ColRegExpExtractProcessingResult ScriptExtractRegExpValues(double documentID, string text, CSScriptManager scriptManager, int columnID)
        {
            ColRegExpExtractProcessingResult result = null;

            try
            {
                List <string> regExpList = new List <string>();
                foreach (var regExp in _listRegExps.Where(x => x.ExtractOptions != null && x.ExtractOptions.Extract))
                {
                    regExpList.Add(regExp.Expression);
                }

                var returnValue = scriptManager.Run(text, regExpList);

                if (!String.IsNullOrEmpty(returnValue))
                {
                    result = new ColRegExpExtractProcessingResult
                    {
                        ColumnID   = columnID,
                        DocumentID = documentID,
                        Value      = returnValue
                    };
                }
            }
            catch (Exception ex)
            {
                Logger.HandleException(ex);
            }

            return(result);
        }
        protected ColRegExpExtractProcessingResult ExtractRegExpValues(ColRegExp regExp, double documentID, string text)
        {
            ColRegExpExtractProcessingResult result = null;

            try
            {
                var matches     = regExp.GetFilteredMatches(text);
                var matchValues = matches.Select(match => match.Value)
                                  .ToList();

                if (matchValues.Any())
                {
                    var returnValue = String.Empty;

                    switch (regExp.ExtractOptions.InstanceNo)
                    {
                    case 1:
                        returnValue = matchValues[0];
                        break;

                    case 2:
                        returnValue = matchValues[matches.Count - 1];
                        break;

                    case 3:
                        returnValue = matchValues.ElementAtOrDefault(regExp.ExtractOptions.NthInstaceNumber.Value - 1);
                        break;

                    case 4:
                        returnValue = matchValues.Count > 1 ? Newtonsoft.Json.JsonConvert.SerializeObject(matchValues.ToArray()) : matchValues.First();
                        break;
                    }

                    ///////////////////////////////////////////////////////////////////////////////

                    if (!String.IsNullOrEmpty(returnValue))
                    {
                        result = new ColRegExpExtractProcessingResult()
                        {
                            DocumentID     = documentID,
                            ColumnID       = regExp.ColumnID,
                            Value          = returnValue,
                            ExtractOptions = regExp.ExtractOptions
                        };
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.HandleException(ex);
            }

            return(result);
        }