Exemple #1
0
        public void TestClassesAndIncludes()
        {
            var wordRegex = new RegexBuilder()
                            .CharClass(CharacterClass.WordBoundary)
                            .CharClass(CharacterClass.WordChar).Repeat(RegexRepeats.OneOrMore)
                            .CharClass(CharacterClass.WordBoundary);

            var seperatorRegex = new RegexBuilder().AnyOf(new[] { '-' }, new[] { CharacterClass.Whitespace });

            var regex = new RegexBuilder(RegexScope.FullLine)
                        .Include(wordRegex).Capture()
                        .Include(seperatorRegex)
                        .Include(wordRegex).Capture()
                        .CharClass(CharacterClass.Any).Repeat(RegexRepeats.ZeroOrMore)
                        .ToRegex();

            var match1 = regex.Match("Hello world");
            var match2 = regex.Match("Hello-world");
            var match3 = regex.Match("Hello");
            var match4 = regex.Match("Hello wo!ld");

            Assert.IsTrue(match1.Success && match1.Groups.Count == 3 && match1.Groups[1].Value == "Hello" && match1.Groups[2].Value == "world");
            Assert.IsTrue(match2.Success && match2.Groups.Count == 3 && match2.Groups[1].Value == "Hello" && match2.Groups[2].Value == "world");
            Assert.IsTrue(!match3.Success);
            Assert.IsTrue(match4.Success && match4.Groups.Count == 3 && match4.Groups[1].Value == "Hello" && match4.Groups[2].Value == "wo");
        }
Exemple #2
0
        public void TestLiteral2()
        {
            var regex = new RegexBuilder().Literal(".").ToRegex();

            Assert.IsTrue(!regex.IsMatch("The cat sat on the mat"));
            Assert.IsTrue(regex.IsMatch("The cat sat on the mat."));
        }
Exemple #3
0
        public void TestLimitZeroOrOne()
        {
            var regex = new RegexBuilder(RegexScope.StartsWith)
                        .Literal("dbo.").Repeat(RegexRepeats.ZeroOrOne)
                        .ToRegex();

            Assert.IsTrue(regex.IsMatch("dbo.TableName") && regex.IsMatch("TableName"));
        }
Exemple #4
0
        public void TestScopeFullLine()
        {
            var regex = new RegexBuilder(RegexScope.FullLine).Literal("cat").ToRegex();

            Assert.IsTrue(regex.IsMatch("cat"));
            Assert.IsTrue(!regex.IsMatch("The cat"));
            Assert.IsTrue(!regex.IsMatch("The cat sat"));
            Assert.IsTrue(!regex.IsMatch("cat sat"));
        }
Exemple #5
0
        public void TestScopeEndsWith()
        {
            var regex = new RegexBuilder(RegexScope.EndsWith).Literal("cat").ToRegex();

            Assert.IsTrue(regex.IsMatch("cat"));
            Assert.IsTrue(regex.IsMatch("The cat"));
            Assert.IsTrue(!regex.IsMatch("The cat sat"));
            Assert.IsTrue(!regex.IsMatch("cat sat"));
        }
Exemple #6
0
        public void TestScopeAnywhere()
        {
            var regex = new RegexBuilder(RegexScope.Anywhere).Literal("cat").ToRegex();

            Assert.IsTrue(regex.IsMatch("cat"));
            Assert.IsTrue(regex.IsMatch("The cat"));
            Assert.IsTrue(regex.IsMatch("The cat sat"));
            Assert.IsTrue(regex.IsMatch("cat sat"));
        }
Exemple #7
0
        public void TestNotAnyOfString()
        {
            var strings = new[] { "cat", "kitty", "pussycat" };
            var regex   = new RegexBuilder().Literal("The ").Not().AnyOf(strings).ToRegex();

            Assert.IsTrue(!regex.IsMatch("The cat sits on the carpet"));
            Assert.IsTrue(!regex.IsMatch("The kitty sits on the mat"));
            Assert.IsTrue(regex.IsMatch("The dog sits on the carpet"));
        }
Exemple #8
0
        public void TestAnyOfString()
        {
            var strings = new[] { "cat", "sat", "mat" };
            var regex   = new RegexBuilder().AnyOf(strings).ToRegex();

            Assert.IsTrue(regex.IsMatch("The cat sits on the carpet"));
            Assert.IsTrue(regex.IsMatch("The kitty sits on the mat"));
            Assert.IsTrue(!regex.IsMatch("The kitty sits on the carpet"));
        }
Exemple #9
0
        public void TestNotAnyOfCharClass()
        {
            var chars = new[] { CharacterClass.AlphaLower, CharacterClass.Digit };
            var regex = new RegexBuilder().Not().AnyOf(chars).ToRegex();

            Assert.IsTrue(regex.IsMatch("Letters"));
            Assert.IsTrue(regex.IsMatch("LETTERS 1234"));
            Assert.IsTrue(!regex.IsMatch("letters"));
            Assert.IsTrue(!regex.IsMatch("1234"));
        }
Exemple #10
0
        public void TestAnyOfChar()
        {
            var chars = new[] { '^', 'a', 'b', 'c', ']', '-' };
            var regex = new RegexBuilder().AnyOf(chars).ToRegex();

            Assert.IsTrue(regex.IsMatch("cab"));
            Assert.IsTrue(regex.IsMatch("See this [thing]"));
            Assert.IsTrue(regex.IsMatch("Over-excited"));
            Assert.IsTrue(!regex.IsMatch("Kitten"));
        }
Exemple #11
0
        public void TestRaw()
        {
            var regex = new RegexBuilder(RegexScope.StartsWith)
                        .Literal("The ", true)
                        .Raw("c[auo]t")
                        .ToRegex();

            Assert.IsTrue(regex.IsMatch("The cat"));
            Assert.IsTrue(regex.IsMatch("The cut"));
            Assert.IsTrue(!regex.IsMatch("The cet"));
        }
Exemple #12
0
        public void TestNotAnyOfChar()
        {
            var chars = new[] { '^', 'o', 'a' };
            var regex = new RegexBuilder().Literal("c")
                        .Not().AnyOf(chars)
                        .Literal("t").ToRegex();

            Assert.IsTrue(regex.IsMatch("cut"));
            Assert.IsTrue(!regex.IsMatch("cat"));
            Assert.IsTrue(!regex.IsMatch("cot"));
            Assert.IsTrue(!regex.IsMatch("c^t"));
        }
Exemple #13
0
        public void TestLimitMinMax()
        {
            var regexGreedy = new RegexBuilder(RegexScope.StartsWith)
                              .Literal("Boo").Repeat(2, 4, true).Capture()
                              .ToRegex();

            var regexNotGreedy = new RegexBuilder(RegexScope.StartsWith)
                                 .Literal("Boo").Repeat(2, 4, false).Capture()
                                 .ToRegex();

            var match1 = regexGreedy.Match("BooBooBooBooBooBooBooBoo");
            var match2 = regexNotGreedy.Match("BooBooBooBooBooBooBooBoo");

            Assert.IsTrue(match1.Success && match1.Groups[1].Value == "BooBooBooBoo");
            Assert.IsTrue(match2.Success && match2.Groups[1].Value == "BooBoo");
        }
Exemple #14
0
        public void TestCaptureByName()
        {
            var sql1 = "CREATE TABLE dbo.Bob (a INT IDENTITY(1,1))";
            var sql2 = "CREATE TABLE Bob (a INT IDENTITY(1,1))";

            char[] alphabet = "abcdefghijklmnopqrstuvwxyz".ToCharArray();

            var regex = new RegexBuilder()
                        .Literal("CREATE TABLE ", true)
                        .Literal("dbo.").Repeat(RegexRepeats.ZeroOrOne)
                        .AnyOf(alphabet).Repeat(RegexRepeats.OneOrMore).Capture("tableName")
                        .Literal(" ")
                        .ToRegex(RegexOptions.IgnoreCase);

            var match1 = regex.Match(sql1);
            var match2 = regex.Match(sql2);

            Assert.IsTrue(match1.Success && match1.Groups["tableName"].Value == "Bob");
            Assert.IsTrue(match2.Success && match2.Groups["tableName"].Value == "Bob");
        }
 /// <summary>
 /// Insert an existing regular expression
 /// </summary>
 /// <param name="values">Expression to insert</param>
 /// <returns>This regular expression builder</returns>
 public RegexBuilder Include(RegexBuilder expression)
 {
     this.AddExpression(this.negate.Read() ? "(?!{0})" : "(?:{0})", expression.ToString());
     return(this);
 }