Filkolev

O, My Girl!

May 27th, 2015
356
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Linq;
  3. using System.Text;
  4. using System.Text.RegularExpressions;
  5.  
  6. public class OMyGirl
  7. {
  8.     public static void Main()
  9.     {
  10.         string key = Console.ReadLine();
  11.         string input = Console.ReadLine();
  12.  
  13.         StringBuilder sb = new StringBuilder();
  14.  
  15.         while (input != "END")
  16.         {
  17.             sb.Append(input);
  18.             input = Console.ReadLine();
  19.         }
  20.  
  21.         string text = sb.ToString();
  22.  
  23.         sb = new StringBuilder();
  24.  
  25.         if (!char.IsLetterOrDigit(key[0]))
  26.         {
  27.             sb.Append("\\" + key[0]);
  28.         }
  29.         else
  30.         {
  31.             sb.Append(key[0]);
  32.         }
  33.  
  34.         for (int i = 1; i < key.Length - 1; i++)
  35.         {
  36.             if (char.IsDigit(key[i]))
  37.             {
  38.                 sb.Append(@"[0-9]*");
  39.             }
  40.             else if (char.IsLower(key[i]))
  41.             {
  42.                 sb.Append(@"[a-z]*");
  43.             }
  44.             else if (char.IsUpper(key[i]))
  45.             {
  46.                 sb.Append(@"[A-Z]*");
  47.             }
  48.             else if (key[i] == '+'
  49.                 || key[i] == '*'
  50.                 || key[i] == '?'
  51.                 || key[i] == '['
  52.                 || key[i] == ']'
  53.                 || key[i] == '('
  54.                 || key[i] == ')')
  55.             {
  56.                 sb.Append("\\" + key[i]);
  57.             }
  58.             else
  59.             {
  60.                 sb.Append(key[i]);
  61.             }
  62.         }
  63.  
  64.         if (!char.IsLetterOrDigit(key[key.Length - 1]))
  65.         {
  66.             sb.Append("\\" + key[key.Length - 1]);
  67.         }
  68.         else
  69.         {
  70.             sb.Append(key[key.Length - 1]);
  71.         }
  72.  
  73.         string pattern = sb + "(.{2,6}?)" + sb;
  74.  
  75.         Regex regex = new Regex(pattern);
  76.  
  77.         var matches = regex.Matches(text).Cast<Match>().Select(match => match.Groups[1].Value);
  78.  
  79.         Console.WriteLine(string.Join(string.Empty, matches));
  80.     }
  81. }
RAW Paste Data