Changeset 2008


Ignore:
Timestamp:
Oct 23, 2010, 12:15:12 PM (11 years ago)
Author:
Sven Rech
Message:

added own regex algorithm (which can match much faster)

Location:
trunk/CrypPlugins/CostFunction
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/CostFunction/CostFunction.cs

    r2006 r2008  
    3030using System.Threading;
    3131using System.Reflection;
     32
    3233namespace Cryptool.Plugins.CostFunction
    3334{
     
    6465        private IDictionary<int, IDictionary<string, double[]>> statistics;
    6566
    66         private Regex regularexpression = null;
     67        private RegEx regularexpression = null;
    6768
    6869        #endregion
     
    233234                        break;
    234235                    case 5: //regular expressions
    235                         this.Value = regex(bigramInput);
     236                        this.Value = regex(array);
    236237                        break;
    237238                    case 6: // Weighted Bigrams/Trigrams (used by genetic algorithm in transposition analyser)
     
    405406        }
    406407
    407         public double regex(string input)
    408         {
    409             if (regularexpression == null || regularexpression.ToString() != settings.RegEx)
     408        private string lastRegexSetting = null;
     409
     410        public double regex(byte[] input)
     411        {
     412            if (regularexpression == null || lastRegexSetting != settings.RegEx)
    410413            {
    411414                if (settings.RegEx == null)
    412415                {
    413416                    GuiLogMessage("There is no Regular Expression to be searched for. Please insert regex in the 'Regular Expression' - Textarea", NotificationLevel.Error);
    414                     return new Double();
    415                 }
    416                 regularexpression = new Regex(settings.RegEx, RegexOptions.Compiled);
    417             }
    418 
     417                    return -1.0;
     418                }
     419                regularexpression = new RegEx(settings.RegEx);
     420                lastRegexSetting = settings.RegEx;
     421            }
    419422
    420423            try
    421424            {
    422                 Match match = regularexpression.Match(input);
    423                 if (match.Success)
     425                bool match = regularexpression.Matches(input);
     426                if (match)
    424427                {
    425428                    return 1.0;
     
    824827                    return plugin.calculateNGrams(plugin.ByteArrayToString(text), 2, 1, false);
    825828                case 5: // regular expression
    826                     return plugin.regex(plugin.ByteArrayToString(text));
     829                    return plugin.regex(text);
    827830                case 6:
    828831                    return plugin.calculateWeighted(plugin.ByteArrayToString(text));
  • trunk/CrypPlugins/CostFunction/CostFunction.csproj

    r1858 r2008  
    113113    <Compile Include="CostFunction.cs" />
    114114    <Compile Include="CostFunctionSettings.cs" />
     115    <Compile Include="RegEx.cs" />
    115116  </ItemGroup>
    116117  <ItemGroup>
Note: See TracChangeset for help on using the changeset viewer.