public void SimpleNegativeLookbehindMatchTest() { // Arrange var text = "Monday February 1, 2010"; var regex = new Regex(@"(?<!(Saturday|Sunday) )\b\w+ \d{1,2}, \d{4}\b"); var expectedMatch = regex.Match(text); var regexGenerator = new RegexGenerator(RegexLanguage.DotNet) .AddNegativeLookbehindAssertion(@"(Saturday|Sunday) ") .Add(@"\b\w+ \d{1,2}, \d{4}\b"); // Act var generatedRegex = regexGenerator.Create(); var actualMatch = generatedRegex.Match(text); // Assert Assert.True(expectedMatch.Success); Assert.True(actualMatch.Success); Assert.Equal(expectedMatch.Value, actualMatch.Value); }
public void SimplePositiveLookaheadMatchTest() { // Arrange var text = "The dog is a Malamute."; var regex = new Regex(@"\b\w+(?=\sis\b)"); var expectedMatch = regex.Match(text); var regexGenerator = new RegexGenerator(RegexLanguage.DotNet) .Add(@"\b\w+") .AddPositiveLookaheadAssertion(@"\sis\b"); // Act var generatedRegex = regexGenerator.Create(); var actualMatch = generatedRegex.Match(text); // Assert Assert.True(expectedMatch.Success); Assert.True(actualMatch.Success); Assert.Equal(expectedMatch.Value, actualMatch.Value); }
public void SimpleAtomicGroupMatchTest() { // Arrange var text = "aaad"; var regex = new Regex(@"(?>(\w)\1+).\b"); var expectedMatch = regex.Match(text); var regexGenerator = new RegexGenerator(RegexLanguage.DotNet) .AddAtomicGroup(@"(\w)\1+") .Add(@".\b"); // Act var generatedRegex = regexGenerator.Create(); var actualMatch = generatedRegex.Match(text); // Assert Assert.True(expectedMatch.Success); Assert.True(actualMatch.Success); Assert.Equal(expectedMatch.Value, actualMatch.Value); }
public void SimpleCapturingGroupWithAngleBracketedNameMatchTest() { // Arrange var text = "abcde"; var regex = new Regex(@"(?<word>abcde)"); var expectedMatch = regex.Match(text); var expectedGroup = expectedMatch.Groups["word"]; var regexGenerator = new RegexGenerator(RegexLanguage.DotNet) .AddGroup(@"abcde", name: "word"); // Act var generatedRegex = regexGenerator.Create(); var actualMatch = generatedRegex.Match(text); var actualGroup = actualMatch.Groups["word"]; // Assert Assert.True(expectedMatch.Success); Assert.True(actualMatch.Success); Assert.Equal(expectedGroup.Value, actualGroup.Value); }
public void SimplePositiveLookbehindMatchTest() { // Arrange var text = "1999 2010"; var regex = new Regex(@"(?<=\b20)\d{2}\b"); var expectedMatch = regex.Match(text); var regexGenerator = new RegexGenerator(RegexLanguage.DotNet) .AddPositiveLookbehindAssertion(@"\b20") .Add(@"\d", min: 2, max: 2) .Add(@"\b"); // Act var generatedRegex = regexGenerator.Create(); var actualMatch = generatedRegex.Match(text); // Assert Assert.True(expectedMatch.Success); Assert.True(actualMatch.Success); Assert.Equal(expectedMatch.Value, actualMatch.Value); }
public void SimpleNegativeLookaheadMatchTest() { // Arrange var text = "unite one"; var regex = new Regex(@"\b(?!un)\w+\b"); var expectedMatch = regex.Match(text); var regexGenerator = new RegexGenerator(RegexLanguage.DotNet) .Add(@"\b") .AddNegativeLookaheadAssertion(@"un") .Add(@"\w+\b"); // Act var generatedRegex = regexGenerator.Create(); var actualMatch = generatedRegex.Match(text); // Assert Assert.True(expectedMatch.Success); Assert.True(actualMatch.Success); Assert.Equal(expectedMatch.Value, actualMatch.Value); }
public void SimpleCapturingGroupWithApostrophedNameMatchTest() { // Arrange var text = "abcde"; var regex = new Regex(@"(?'word'abcde)"); var expectedMatch = regex.Match(text); var expectedGroup = expectedMatch.Groups["word"]; var regexGenerator = new RegexGenerator(RegexLanguage.DotNet) .AddGroup(@"abcde", name: "word"); // Important! (regexGenerator.RegexLanguageStrategy.Stringifier as DotNetRegexStringifier).NamedCaptureGroupBracketOption = NamedCaptureGroupBracketOption.Apostrophe; // Act var generatedRegex = regexGenerator.Create(); var actualMatch = generatedRegex.Match(text); var actualGroup = actualMatch.Groups["word"]; // Assert Assert.True(expectedMatch.Success); Assert.True(actualMatch.Success); Assert.Equal(expectedGroup.Value, actualGroup.Value); }
public void UnicodeCategoryByFlagMatchesTest() { var textDict = new Dictionary <RegexUnicodeCategoryFlag, string>() { { RegexUnicodeCategoryFlag.Lu, "A" }, // U+0041 { RegexUnicodeCategoryFlag.Ll, "a" }, // U+0061 { RegexUnicodeCategoryFlag.Lt, "Dž" }, // U+01C5 //{ RegexUnicodeCategoryFlag.LC, "AaDž" }, { RegexUnicodeCategoryFlag.Lm, "ʰ" }, // U+02B0 { RegexUnicodeCategoryFlag.Lo, "ƻ" }, // U+01BB //{ RegexUnicodeCategoryFlag.L, "AaDžʰƻ" }. { RegexUnicodeCategoryFlag.Mn, "\u033A" }, // U+033A { RegexUnicodeCategoryFlag.Mc, "\u0903" }, // U+0903 { RegexUnicodeCategoryFlag.Me, "\u20E0" }, // U+20E0 //{ RegexUnicodeCategoryFlag.M, "\u033A\U0001D16F\u20E0" }, { RegexUnicodeCategoryFlag.Nd, "0" }, // U+0030 { RegexUnicodeCategoryFlag.Nl, "〡" }, // U+3021 { RegexUnicodeCategoryFlag.No, "¼" }, // U+00BC //{ RegexUnicodeCategoryFlag.N, "0〡¼" }, { RegexUnicodeCategoryFlag.Pc, "_" }, // U+005F { RegexUnicodeCategoryFlag.Pd, "-" }, // U+002D { RegexUnicodeCategoryFlag.Ps, "(" }, // U+0028 { RegexUnicodeCategoryFlag.Pe, ")" }, // U+0029 { RegexUnicodeCategoryFlag.Pi, "«" }, // U+00AB { RegexUnicodeCategoryFlag.Pf, "»" }, // U+00BB { RegexUnicodeCategoryFlag.Po, "!" }, // U+0021 //{ RegexUnicodeCategoryFlag.P, "_-()«»!" }, { RegexUnicodeCategoryFlag.Sm, "+" }, // U+002B { RegexUnicodeCategoryFlag.Sc, "$" }, // U+0024 { RegexUnicodeCategoryFlag.Sk, "^" }, // U+005E { RegexUnicodeCategoryFlag.So, "⚡" }, // U+26A1 //{ RegexUnicodeCategoryFlag.S, "+$^⚡" }, { RegexUnicodeCategoryFlag.Zs, " " }, // U+0020 { RegexUnicodeCategoryFlag.Zl, "\u2028" }, // U+2028 { RegexUnicodeCategoryFlag.Zp, "\u2029" }, // U+2029 //{ RegexUnicodeCategoryFlag.Z, " \u2028\u2029" }, { RegexUnicodeCategoryFlag.Cc, "\u0000" }, // U+0000 { RegexUnicodeCategoryFlag.Cf, "\u00AD" }, // U+00AD { RegexUnicodeCategoryFlag.Cs, "\uD800" }, // U+D800 { RegexUnicodeCategoryFlag.Co, "\uE000" }, // U+E000 //{ RegexUnicodeCategoryFlag.Cn, "" }, // nothing //{ RegexUnicodeCategoryFlag.C, "\u0000\u00AD\uD800\uE000" } }; for (RegexUnicodeCategoryFlag flag = RegexUnicodeCategoryFlag.Lu; flag < RegexUnicodeCategoryFlag.Cn; flag = (RegexUnicodeCategoryFlag)((int)flag << 1)) { // Arrange var text = textDict[flag]; var regex = new Regex($@"\p{{{flag}}}+"); var expectedMatch = regex.Match(text); var regexGenerator = new RegexGenerator(RegexLanguage.DotNet) .AddUnicodeCategory(flag, min: 1); // Act var generatedRegex = regexGenerator.Create(); var actualMatch = generatedRegex.Match(text); // Assert Assert.True(expectedMatch.Success); Assert.True(actualMatch.Success); Assert.Equal(expectedMatch.Value, actualMatch.Value); } }