Example #1
0
        static void _RunFromFA()
        {
            var expr = RegexExpression.Parse("(0*11*0[01]*)");
            var fa   = expr.ToFA <string>();

            fa.IsAccepting = true;             // modify the expression by changing the FSM
            var x = new CharFA <string>();
            var y = new CharFA <string>();
            var z = new CharFA <string>(true);

            x.InputTransitions.Add('a', y);
            y.InputTransitions.Add('b', y);
            y.InputTransitions.Add('c', z);
            fa = x;
            var test = "[A-Z_a-z][0-9A-Z_a-z]*";

            //test = "ab*c";
            test = "(foo)*bar";
            fa   = RegexExpression.Parse(test).ToFA <string>();
            fa.RenderToFile(@"..\..\..\test_expr_nfa.jpg");
            var ffa = fa.ToDfa();

            ffa.RenderToFile(@"..\..\..\test_expr.jpg");
            expr = RegexExpression.FromFA(fa);
            Console.WriteLine(expr);
            fa.RenderToFile(@"..\..\..\test_nfa.jpg");
            var dfa = fa.ToDfa();

            dfa.RenderToFile(@"..\..\..\test.jpg");
        }
		string Interpret(string regex)
		{
			RegexBuffer buffer = new RegexBuffer(regex);
			RegexExpression expression = new RegexExpression(buffer);
			string output = expression.ToString(0);
			return output;
		}
 public RegexConditional(RegexBuffer buffer)
 {
     this.startLocation = buffer.Offset;
     this.expression = new RegexExpression(buffer);
     this.CheckClosingParen(buffer);
     this.yesNo = new RegexExpression(buffer);
     this.CheckClosingParen(buffer);
     buffer.AddLookup(this, this.startLocation, buffer.Offset - 1);
 }
Example #4
0
 public Regex(
     bool startsWith,
     RegexExpression expression,
     bool endsWith)
 {
     StartsWith = startsWith;
     EndsWith = endsWith;
     Expression = expression;
     _hashCode = ComputeHashCode();
 }
Example #5
0
 public ActionResult Create(RegexExpression model, string[] nonMatch,string[] match )
 {
     model.CreateDate = DateTime.Now;
     model.ClickCount = 0;
     model.UserID = FrontContext.CurrentRegexUser.ID;
     model.NonMatches = StringUtility.ArrayJoin(nonMatch.Where(x=>!string.IsNullOrEmpty(x)).ToArray(),"|||");
     model.Matches = StringUtility.ArrayJoin(match.Where(x =>! string.IsNullOrEmpty(x)).ToArray(), "|||");
     bizRegexExpression.Save(model);
     return Redirect(string.Format("/{0}",FrontContext.CurrentRegexUser.Name));
 }
Example #6
0
 public ActionResult Edit(RegexExpression model, string[] nonMatch, string[] match,string c,int? p)
 {
     RegexExpression original = bizRegexExpression.GetByID(model.ID);
     original.NonMatches = StringUtility.ArrayJoin(nonMatch.Where(x => !string.IsNullOrEmpty(x)).ToArray(), "|||");
     original.Matches = StringUtility.ArrayJoin(match.Where(x => !string.IsNullOrEmpty(x)).ToArray(), "|||");
     original.Expression = model.Expression;
     original.Description = model.Description;
     original.Title = model.Title;
     bizRegexExpression.SaveOrUpdate(original);
     return Redirect(string.Format("/{0}?{1}p={2}&t={3}", FrontContext.CurrentRegexUser.Name, string.IsNullOrEmpty(c)?"":string.Format("c={0}&",c), p, (int)EnumExpressionType.myExpression));
 }
Example #7
0
        static void _RunDom()
        {
            var test = "(ABC|DEF)*";
            var dom  = RegexExpression.Parse(test);

            Console.WriteLine(dom.ToString());
            var rep = dom as RegexRepeatExpression;

            rep.MinOccurs = 1;
            Console.WriteLine(dom.ToString());
            dom.ToFA("Accept");
            Console.WriteLine();
        }
 private void InterpretRegEx()
 {
     this.buffer = new RegexBuffer(this.textBoxRegex.Text) { RegexOptions = this.CreateRegexOptions() };
     try
     {
         RegexExpression exp = new RegexExpression(this.buffer);
         this.textBoxInterpretation.Text = exp.ToString(0);
         this.textBoxInterpretation.ForeColor = Color.Black;
     }
     catch (Exception ex)
     {
         this.textBoxInterpretation.Text = "We have a situation...\r\n\r\n (" + ex.Message + ")";
         this.textBoxRegex.Focus();
         this.textBoxInterpretation.ForeColor = Color.Gray;
     }
 }
Example #9
0
        static void Main()
        {
            var sw = Stopwatch.StartNew();
            var a  = RegexExpression.Parse(@"a.+a").ToFA <string>();

            Console.WriteLine(sw.ElapsedMilliseconds);
            a.RenderToFile("tmp.png");
            // _BuildArticleImages() // requires GraphViz
            // _RunCompiledLexCodeGen()

            /*_RunLexer();
             * _RunMatch();
             * _RunDom();
             * // the following require GraphViz
             * _RunStress();
             * _RunStress2();*/
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="RegexConditional"/> class.
        /// </summary>
        /// <param name="buffer">The buffer.</param>
        public RegexConditional(RegexBuffer buffer)
        {
            if (buffer == null)
            {
                throw new ArgumentNullException("buffer", "RegexBuffer is null");
            }

            this.startLocation = buffer.Offset;

            this.expression = new RegexExpression(buffer);
            this.CheckClosingParen(buffer);

            this.yesNo = new RegexExpression(buffer);
            this.CheckClosingParen(buffer);

            buffer.AddLookup(this, this.startLocation, buffer.Offset - 1);
        }
Example #11
0
        static void _RunStress()
        {
            // C# keywords
            const string cskw = "abstract|add|as|ascending|async|await|base|bool|break|byte|case|catch|char|checked|class|const|continue|decimal|default|delegate|descending|do|double|dynamic|else|enum|equals|explicit|extern|false|finally|fixed|float|for|foreach|get|global|goto|if|implicit|int|interface|internal|is|lock|long|namespace|new|null|object|operator|out|override|params|partial|private|protected|public|readonly|ref|remove|return|sbyte|sealed|set|short|sizeof|stackalloc|static|string|struct|switch|this|throw|true|try|typeof|uint|ulong|unchecked|unsafe|ushort|using|var|virtual|void|volatile|while|yield";
            var          expr = RegexExpression.Parse(cskw);
            var          fa   = expr.ToFA("");

            Console.WriteLine("C# keyword NFA has {0} states.", fa.FillClosure().Count);
            Console.WriteLine("Reducing C# keywords");
            // very expensive in this case
            fa = fa.Reduce(new _ConsoleProgress());
            Console.WriteLine();
            Console.WriteLine("C# keyword DFA has {0} states.", fa.FillClosure().Count);
            var dopt = new CharFA <string> .DotGraphOptions();

            dopt.Dpi = 150;             // make the image smaller
            Console.WriteLine("Rendering stress.jpg");
            fa.RenderToFile(@"..\..\..\stress.jpg", dopt);
        }
Example #12
0
 public RegexAtomExpression(RegexExpression expression)
 {
     Expression = expression;
 }
 public static string Interpret(string regex)
 {
     RegexBuffer buffer = new RegexBuffer(regex);
     RegexExpression expression = new RegexExpression(buffer);
     return expression.ToString(0);
 }
        private string[] CompileToLiterals(RegexExpression exp, string seed = "")
        {
            if (exp is BinaryExpression)
            {
                var binExp = exp as BinaryExpression;

                string[] leftLiterals = CompileToLiterals(binExp.Left),
                    rightLiterals = CompileToLiterals(binExp.Right);

                if (rightLiterals != null)
                {
                    var combinedStrings = leftLiterals.SelectMany(x => rightLiterals.Select(y => x + y));

                    if (binExp.Operator == RegexTokenType.OrOperator)
                    {
                        return leftLiterals.Concat(rightLiterals).ToArray();
                    }
                    else
                    {
                        return combinedStrings.ToArray();
                    }
                }
                else
                {
                    return leftLiterals;
                }
            }
            else if (exp is GroupExpression)
            {
                var groupExp = exp as GroupExpression;

                var literals = CompileToLiterals(groupExp.Expression, seed);

                if (groupExp.Quantifier == RegexTokenType.ZeroOrOneQuantifier)
                {
                    return literals.Concat(new[] { "" }).ToArray();
                }
                else if (groupExp.Quantifier != RegexTokenType.None)
                {
                    throw new InvalidOperationException(
                        string.Format("Unsupported quantifier: {0}", groupExp.Quantifier));
                }

                return literals;
            }
            else if (exp is CharExpression)
            {
                var charExp = exp as CharExpression;

                if (charExp.Quantifier == RegexTokenType.None)
                {
                    return new string[] { seed + charExp.Char };
                }
                else
                {
                    throw new InvalidOperationException(
                        string.Format("Unsupported quantifier: {0}", charExp.Quantifier));
                }
            }
            else
                throw new InvalidOperationException();
        }
Example #15
0
        static void _BuildArticleImages()
        {
            // this generates the figures used in the code project article
            // at https://www.codeproject.com/Articles/5251476/How-to-Build-a-Regex-Engine-in-Csharp
            var litA = CharFA <string> .Literal("ABC", "Accept");

            litA.RenderToFile(@"..\..\..\literal.jpg");
            var litAa = CharFA <string> .CaseInsensitive(litA, "Accept");

            litAa.RenderToFile(@"..\..\..\literal_ci.jpg");
            var opt = CharFA <string> .Optional(litA, "Accept");

            opt.RenderToFile(@"..\..\..\optional.jpg");
            var litB = CharFA <string> .Literal("DEF");

            var or = CharFA <string> .Or(new CharFA <string>[] { litA, litB }, "Accept");

            or.RenderToFile(@"..\..\..\or.jpg");
            var set = CharFA <string> .Set("ABC", "Accept");

            set.RenderToFile(@"..\..\..\set.jpg");
            var loop = CharFA <string> .Repeat(litA, 1, -1, "Accept");

            loop.RenderToFile(@"..\..\..\repeat.jpg");
            var concat = CharFA <string> .Concat(new CharFA <string>[] { litA, litB }, "Accept");

            concat.RenderToFile(@"..\..\..\concat.jpg");
            var foobar = CharFA <string> .Or(new CharFA <string>[] { CharFA <string> .Literal("foo"), CharFA <string> .Literal("bar") }, "Accept");

            foobar.RenderToFile(@"..\..\..\foobar_nfa.jpg");
            var rfoobar = foobar.Reduce();

            rfoobar.RenderToFile(@"..\..\..\foobar.jpg");
            var lfoobar = CharFA <string> .Repeat(foobar, 1, -1, "Accept");

            lfoobar.RenderToFile(@"..\..\..\foobar_loop_nfa.jpg");
            var rlfoobar = lfoobar.Reduce();

            rlfoobar.RenderToFile(@"..\..\..\foobar_loop.jpg");

            var digits = CharFA <string> .Repeat(
                CharFA <string> .Set("0123456789"),
                1, -1
                , "Digits");

            var word = CharFA <string> .Repeat(
                CharFA <string> .Set(new CharRange[] { new CharRange('A', 'Z'), new CharRange('a', 'z') }),
                1, -1
                , "Word");

            var whitespace = CharFA <string> .Repeat(
                CharFA <string> .Set(" \t\r\n\v\f"),
                1, -1
                , "Whitespace");

            var lexer = CharFA <string> .ToLexer(digits, word, whitespace);

            lexer.RenderToFile(@"..\..\..\lexer.jpg");
            var dopt = new CharFA <string> .DotGraphOptions();

            dopt.DebugSourceNfa = lexer;
            var dlexer = lexer.ToDfa();

            dlexer.RenderToFile(@"..\..\..\dlexer.jpg", dopt
                                );
            dlexer.RenderToFile(@"..\..\..\dlexer2.jpg");
            var dom = RegexExpression.Parse("(ABC|DEF)+");
            var fa  = dom.ToFA("Accept");

            fa.RenderToFile(@"..\..\..\ABCorDEFloop.jpg");
        }
 public static RegexExpression CreateInsensitive(RegexExpression inner)
 {
     return(Create(inner, false));
 }
Example #17
0
 public RegexExpressionAlteration(RegexTerm term, RegexExpression expression)
     : base(term)
 {
     Expression = expression;
     _hashCode = ComputeHashCode();
 }
Example #18
0
 RegexExpression ParseRegexExpression(string source)
 {
     var regex = new RegexExpression();
     try
     {
         while(_sourceWindow.AdvanceIfMatches("(<#"))
         {
             string name;
             if(!_sourceWindow.AdvanceIfName(out name))
             {
                 throw new ArgumentException("Identifier lost.");
             }
             if(!_sourceWindow.AdvanceIfMatches('>'))
             {
                 throw new ArgumentException("> lost.");
             }
             var sub = ParseExpression();
             if(!_sourceWindow.AdvanceIfMatches(')'))
             {
                 throw new ArgumentException(") needed");
             }
             if(regex.Definitions.Keys.Contains(name))
             {
                 throw new ArgumentException("name duplicated.");
             }
             else
             {
                 regex.Definitions.Add(name, sub);
             }
         }
         regex.Main = ParseExpression();
         if(regex.Main == null)
         {
             throw new ArgumentException("Expression Expected.");
         }
         if(_sourceWindow.HasMoreChars())
         {
             throw new ArgumentException("Syntax error.");
         }
         return regex;
     }
     catch(ArgumentException e)
     {
         //...
         throw new ArgumentException(e.Message);
     }
 }
Example #19
0
 public virtual void Accept(RegexExpression regex)
 {
 }
 public GroupExpression(RegexExpression expression)
 {
     Expression = expression;
 }
        private static INfa Expression(RegexExpression expression)
        {
            switch (expression.NodeType)
            {
                case RegexNodeType.RegexExpression:
                    return Empty();

                case RegexNodeType.RegexExpressionAlteration:
                    var regexExpressionAlteration = expression as RegexExpressionAlteration;

                    var termNfa = Term(regexExpressionAlteration.Term);
                    var expressionNfa = Expression(regexExpressionAlteration.Expression);

                    return Union(termNfa, expressionNfa);

                case RegexNodeType.RegexExpressionTerm:
                    var regexExpressionTerm = expression as RegexExpressionTerm;
                    return Term(regexExpressionTerm.Term);
            }
            throw new InvalidOperationException("Unrecognized Regex Expression");
        }
Example #22
0
 public RegexAtomExpression(RegexExpression expression)
 {
     Expression = expression;
     _hashCode = ComputeHashCode();
 }
 private RegexCaseGroup(RegexExpression inner, bool caseSensitive)
 {
     this.Inner         = inner;
     this.CaseSensitive = caseSensitive;
 }
Example #24
0
 public RegexExpressionAlteration(IRegexTerm term, RegexExpression expression)
 {
     Term       = term;
     Expression = expression;
 }
Example #25
0
 public GroupExpression(RegexExpression expression) =>
 public static RegexExpression Create(RegexExpression inner, bool caseSensitive)
 {
     return((RegexExpression)(inner as RegexNoOp) ?? new RegexCaseGroup(inner, caseSensitive));
 }
 public static RegexExpression CreateSensitive(RegexExpression inner)
 {
     return(Create(inner, true));
 }
        public SpecflowStepInfo Create(string classFullName, string methodName, GherkinStepKind stepKind, string pattern)
        {
            CharFA <string> regexForPartialMatch;

            try
            {
                regexForPartialMatch = RegexExpression.Parse(pattern).ToFA <string>();
            }
            catch (Exception)
            {
                regexForPartialMatch = null;
            }

            Regex regex;

            try
            {
                var fullMatchPattern = pattern;
                if (!fullMatchPattern.StartsWith("^"))
                {
                    fullMatchPattern = "^" + fullMatchPattern;
                }
                if (!fullMatchPattern.EndsWith("$"))
                {
                    fullMatchPattern += "$";
                }
                regex = new Regex(fullMatchPattern, RegexOptions.Compiled, TimeSpan.FromSeconds(2));
            }
            catch (ArgumentException)
            {
                regex = null;
            }

            var regexesPerCapture = new List <Regex>();
            var partialPattern    = new StringBuilder();
            var error             = false;

            foreach (var(type, text, _) in _stepPatternUtil.TokenizeStepPattern(pattern))
            {
                switch (type)
                {
                case StepPatternUtil.StepPatternTokenType.Text:
                    partialPattern.Append(text);
                    break;

                case StepPatternUtil.StepPatternTokenType.Capture:
                    var captureText = text;
                    if (text == ".+")
                    {
                        captureText = ".+?";
                    }
                    else if (text == ".*")
                    {
                        captureText = ".*?";
                    }
                    partialPattern.Append('(').Append(captureText).Append(")");
                    try
                    {
                        regexesPerCapture.Add(new Regex("^" + partialPattern + "(?:(?:[ \"\\)])|$)", RegexOptions.Compiled));
                    }
                    catch (ArgumentException)
                    {
                        error = true;
                    }
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
                if (error)
                {
                    break;
                }
            }

            return(new SpecflowStepInfo(classFullName, methodName, stepKind, pattern, regex, regexForPartialMatch, regexesPerCapture));
        }
 public BinaryExpression(RegexExpression left, RegexTokenType op, RegexExpression right)
 {
     Left = left;
     Operator = op;
     Right = right;
 }
Example #30
0
        public void InsertContacts()
        {
            Console.WriteLine();
            Console.WriteLine("Add a new Contact");


            var         temp1 = true;
            ContactInfo obj   = new ContactInfo();

            try
            {
                do
                {
                    Console.Write("First Name\t:\t");
                    obj.firstName = Console.ReadLine();
                    var fname1 = RegexExpression.NameValidation(obj.firstName);
                    temp1 = SatisfyCondition(fname1, "name");
                }while (temp1 == false);
                Console.Write("Middle Name\t:\t");
                obj.middleName = Console.ReadLine();
                var mname1 = RegexExpression.NameValidation(obj.middleName);
                temp1 = SatisfyCondition(mname1, "name");


                Console.Write("Last Name\t:\t");
                obj.lastName = Console.ReadLine();
                var lname1 = RegexExpression.NameValidation(obj.lastName);
                temp1 = SatisfyCondition(lname1, "name");

                do
                {
                    Console.Write("Date of Birth (DD-MM-YYYY)\t:\t");
                    // string datestring = Console.ReadLine();
                    DateTime birth;
                    // obj.Birthday =
                    if (DateTime.TryParse(Console.ReadLine(), out birth))
                    {
                        obj.Birthday = birth;
                    }
                    else
                    {
                        Console.WriteLine("Date is not valid");
                    }

                    var Birthday1 = RegexExpression.IsValidDate(obj.Birthday);
                    temp1 = SatisfyCondition(Birthday1, "Date");
                    //  obj.Birthday = Convert.ToDateTime(datestring);
                }while (temp1 == false);

                do
                {
                    try
                    {
                        Console.Write("Email\t:\t");
                        obj.Email = Console.ReadLine();
                        var Email1 = RegexExpression.IsEmail(obj.Email);
                        temp1 = SatisfyCondition(Email1, "email");
                    }
                    catch (Exception)
                    {
                        Console.WriteLine("Enter the valid date");
                    }
                }while (temp1 == false);
                do
                {
                    Console.Write("Work Number\t:\t");
                    obj.WorkNumber = Console.ReadLine();
                    var WorkNumber1 = RegexExpression.HomePhoneNumber(obj.WorkNumber);
                    temp1 = SatisfyCondition(WorkNumber1, "phone");
                }while (temp1 == false);
                do
                {
                    Console.Write("Home Number\t:\t");
                    obj.HomeNumber = Console.ReadLine();
                    var HomeNumber1 = RegexExpression.HomePhoneNumber(obj.HomeNumber);
                    temp1 = SatisfyCondition(HomeNumber1, "phone");
                }while (temp1 == false);
                do
                {
                    Console.Write("Mobile Number\t:\t");
                    obj.MobileNumber = Console.ReadLine();
                    var MobileNumber1 = RegexExpression.IsPhoneNumber(obj.MobileNumber);
                    temp1 = SatisfyCondition(MobileNumber1, "mobile");
                }while (temp1 == false);
                //    do
                //    {
                //        Console.Write("Active status\t:\t");
                //        obj.IsActive = Convert.ToBoolean(Console.ReadLine());
                //        var IsActive1 = RegexExpression.IsActivecheck(obj.IsActive);
                //        temp1 = SatisfyCondition(IsActive1, "isactive");
                //    }
                //    while (temp1 == false);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }

            //ValidationContext context = new ValidationContext(obj, null, null);
            //List<ValidationResult> results = new List<ValidationResult>();
            //bool valid = Validator.TryValidateObject(obj, context, results, true);

            //if (!valid)
            //{
            //    foreach (ValidationResult vr in results)
            //    {
            //        Console.ForegroundColor = ConsoleColor.Blue;
            //     //   Console.Write("Member Name :{0}", vr.MemberNames.First());
            //
            //  Console.Write("Member Name :{0}", vr.MemberNames);
            //        Console.ForegroundColor = ConsoleColor.Red;
            //        Console.Write("   ::  {0}{1}", vr.ErrorMessage, Environment.NewLine);
            //    }
            //}
            //Console.ForegroundColor = ConsoleColor.White;
            //Console.WriteLine("\nPress any key to exit");
            //Console.ReadKey();

            try
            {
                //    productProcess process = new productProcess();

                bool status = c1.InsertNewContact(obj);
                if (status == true)
                {
                    Console.WriteLine("\nContact Successfully added");
                }
                else
                {
                    Console.WriteLine("Insertion failed");
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
 public RegexCompiler(RegexExpression expression)
 {
     _expression = expression;
 }
Example #32
0
        public void UpdateContacts()
        {
            Console.WriteLine();
            Console.WriteLine("Update Contact Details");


            ContactInfo obj = new ContactInfo();

            Console.WriteLine("Enter the ContactId that you want to update");
            obj.ContactId = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Update the Fields that you want to update");
            //Console.Write("First Name\t:\t");
            //obj.firstName = Console.ReadLine();
            //Console.Write("Middle Name\t:\t");
            //obj.middleName = Console.ReadLine();
            //Console.Write("Last Name\t:\t");
            //obj.lastName = Console.ReadLine();
            //Console.Write("Date of Birth (YY/MM/DD)\t:\t");
            //obj.Birthday = Convert.ToDateTime(Console.ReadLine());


            //Console.Write("Email\t:\t");
            //obj.Email = Console.ReadLine();
            //Console.Write("Work Number\t:\t");
            //obj.WorkNumber = Console.ReadLine();
            //Console.Write("Home Number\t:\t");
            //obj.HomeNumber = Console.ReadLine();
            //Console.Write("Mobile Number\t:\t");
            //obj.MobileNumber = Console.ReadLine();
            //Console.Write("Active status\t:\t");
            //obj.IsActive = Convert.ToBoolean(Console.ReadLine());
            //WelcomePage w1 = new WelcomePage();
            //w1.Test2(obj.ContactId);
            var st1 = c1.ShowContactInfoById(obj.ContactId);

            Console.Write("First Name\t':{0}'\t Update FirstName:\t", st1.firstName);

            obj.firstName = Console.ReadLine().ToString();
            if (obj.firstName == "" || obj.firstName == null)
            {
                st1.firstName = obj.firstName;
            }
            var fname1 = RegexExpression.NameValidation(obj.firstName);

            Console.Write("Middle Name\t:{0}'\tUpdate MiddleName:\t", st1.middleName);
            obj.middleName = Console.ReadLine().ToString();
            var mname1 = RegexExpression.NameValidation(obj.middleName);

            Console.Write("Last Name\t:'{0}'\tUpdate LastName:\t", st1.lastName);
            obj.lastName = Console.ReadLine().ToString();
            var lname1 = RegexExpression.NameValidation(obj.lastName);


            Console.Write("Date of Birth (DD-MM-YYYY)\t:\t :'{0}'\t Update BirthDate\t:", st1.Birthday);
            // string datestring = Console.ReadLine();
            DateTime birth;

            // obj.Birthday =
            try
            {
                if (DateTime.TryParse(Console.ReadLine(), out birth))
                {
                    obj.Birthday = birth;
                }
                //else
                //{
                //    Console.WriteLine("Date is not valid");
                //}
            }
            catch (Exception e)
            {
                Console.WriteLine("DateTime is not valid");
            }
            var Birthday1 = RegexExpression.IsValidDate(obj.Birthday);

            try
            {
                Console.Write("Email\t: '{0}'\tUpdate Email ID:\t", st1.Email);
                obj.Email = Console.ReadLine();
                var Email1 = RegexExpression.IsEmail(obj.Email);
            }
            catch (Exception)
            {
                Console.WriteLine("Enter the valid date");
            }
            Console.Write("Work Number :'{0}'\tUpdate Work Number:\t", st1.WorkNumber);
            obj.WorkNumber = Console.ReadLine();
            var WorkNumber1 = RegexExpression.HomePhoneNumber(obj.WorkNumber);

            Console.Write("Home Number :'{0}'\tUpdate Home Number:\t", st1.HomeNumber);
            obj.HomeNumber = Console.ReadLine();
            var HomeNumber1 = RegexExpression.HomePhoneNumber(obj.HomeNumber);

            Console.Write("Mobile Number :'{0}'\tUpdate Mobile Number:\t", st1.MobileNumber);
            obj.MobileNumber = Console.ReadLine();
            var MobileNumber1 = RegexExpression.IsPhoneNumber(obj.MobileNumber);

            try
            {
                //    productProcess process = new productProcess();
                Contact c1 = new Contact();
                // c1.UpdateContact(obj);

                bool status = c1.UpdateContact(obj);
                if (status == true)
                {
                    Console.WriteLine("\nContact Successfully Updated");
                }
                else
                {
                    Console.WriteLine("Updation failed");
                }
                //  ContactInfointer.GetDetails(obj);
                // Console.WriteLine("\nProduct Successfully added");
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
        private int CountStrings(RegexExpression exp, int seed = 1)
        {
            var x = seed;
            if (exp.Quantifier == RegexTokenType.ZeroOrOneQuantifier)
            {
                x++;
            }

            if (exp is BinaryExpression)
            {
                var binExp = (exp as BinaryExpression);

                if (binExp.Operator == RegexTokenType.OrOperator)
                {
                    x++;
                }

                x += CountStrings(binExp.Left, 0) + CountStrings(binExp.Right, 0);
            }
            else if (exp is GroupExpression)
            {
                var groupExp = (exp as GroupExpression);
                x += CountStrings(groupExp.Expression, 0);
            }

            return x;
        }
Example #34
0
 public BinaryExpression(RegexExpression left, RegexTokenType op, RegexExpression right)
 {
     Left     = left;
     Operator = op;
     Right    = right;
 }