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"); }
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"); }
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"); }