Example #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");
        }
Example #2
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");
        }
Example #3
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");
        }