title: Compare two strings using Regex
body: <p>I am using two strings for a matching program like this:</p>
  
  <pre><code>string s1= 5-4-6-+1-+1+1+3000+12+21-+1-+1-+1-+2-3-4-5-+1-+10+1-+1-+;
  string s2= 6-+1-+1+1+3000+12+21-+1-+1-+1-+1-+1-+1+1-+1-+;
  </code></pre>
  
  <p>And I am going to write a Regex matching function which compares each part string between each "+" separately and calculates the match percent, which is the number of matches occurring in each string.
  For example in this example we have these matches:</p>
  
  <pre><code>6
  
  1
  
  1
  
  1
  
  3000
  
  12
  
  21
  
  1
  
  1
  
  1
  
  --
  
  1
  
  --
  
  1
  
  1
  </code></pre>
  
  <p>In this example the match percent is 13*100/15=87%.</p>
  
  <p>Currently I am using the function below, but I think it is not optimized and using Regex may be faster.</p>
  
  <pre><code>public double MatchPercent(string s1, string s2) {
      int percent=0;
      User = s1.Split('+').ToArray();
      Policy = s2.Split('+').ToArray();
  
      for (int i = 0; i &lt; s1.Length - 2; i++) {
          int[] U = User[i].Split('-').Where(a =&gt; a != "").Select(n =&gt; 
                        Convert.ToInt32(n)).Distinct().ToArray();
          int[] P = Policy[i].Split('-').Where(a =&gt; a != "").Select(n =&gt; 
                        Convert.ToInt32(n)).Distinct().ToArray();
          var Co = U.Intersect(P);
          if (Co.Count() &gt; 0) {
              percent += 1;
          }
      }
      return Math.Round((percent) * 100 / s1.Length );
  }
  </code></pre>