public static RegexBuilder WrapInNamedGroup(this RegexBuilder builder, string groupName)
 {
     return(new RegexBuilder()
            .BeginNamedGroup(groupName)
            .Concat(builder)
            .EndNamedGroup());
 }
        public void Init()
        {
            var rMock  = new Mock <IRegex>();
            var rMock1 = new Mock <IRegex>();

            rMock.Setup(x => x.Name).Returns("Test1");
            rMock.Setup(x => x.Regex).Returns(@"\d{2}");

            rMock1.Setup(x => x.Name).Returns("Test2");
            rMock1.Setup(x => x.Regex).Returns(@"[a-z]");

            var v = new Run("w").ContentStart;

            var a = new RegexBuilder(new List <IRegex>()
            {
                rMock.Object, rMock1.Object
            });
            var b = new ExtendText()
            {
                StartText = v, Text = "Rest"
            };
            var c = new ExtendText()
            {
                StartText = v, Text = "123123"
            };

            _d = new MatchFinder(new List <ExtendText>()
            {
                b, c
            }, a);
        }
        public void TestEscapingLiteralNodeRendering()
        {
            RegexNodeEscapingLiteral literal1 = new RegexNodeEscapingLiteral(@"\w\b.353\s");

            Assert.AreEqual(@"\\w\\b\.353\\s", literal1.ToRegexPattern());

            literal1.Quantifier = RegexQuantifier.ZeroOrOne;
            Assert.AreEqual(@"(?:\\w\\b\.353\\s)?", literal1.ToRegexPattern());

            RegexNodeEscapingLiteral literal2 = RegexBuilder.Literal(@"\w\b.353\s");

            Assert.AreEqual(@"\\w\\b\.353\\s", literal2.ToRegexPattern());

            RegexNodeEscapingLiteral literal3 = RegexBuilder.Literal(@"\w\b.353\s", RegexQuantifier.ZeroOrOne);

            Assert.AreEqual(@"(?:\\w\\b\.353\\s)?", literal3.ToRegexPattern());

            RegexNodeEscapingLiteral literal4 = RegexBuilder.Literal(@"a", RegexQuantifier.ZeroOrOne);

            Assert.AreEqual(@"a?", literal4.ToRegexPattern());

            RegexNodeEscapingLiteral literal5 = RegexBuilder.Literal(@"\", RegexQuantifier.ZeroOrOne);

            Assert.AreEqual(@"\\?", literal5.ToRegexPattern());
        }
Exemple #4
0
    public bool InitalizeFromCriteria(int numLetters, int minValid, int maxValid, RegexBuilderOptions regexOptions)
    {
        foundWords   = new List <string>();
        correctWords = new List <string>();
        int attempts = 0;

        while (true)
        {
            string      word     = dictionary.RandomWord(numLetters);
            string      regex    = RegexBuilder.GetRegex(word, regexOptions);
            List <char> listWord = new List <char>(word.ToCharArray());
            constraint   = new Constraint(regex, listWord);
            correctWords = dictionary.GetMatchingConstraint(constraint);
            if (correctWords.Count >= minValid && correctWords.Count <= maxValid)
            {
                break;
            }
            // Failsafe to prevent infinite loops
            if (attempts > 100)
            {
                return(false);
            }
            attempts++;
        }
        return(true);
    }
        public void TestLiteralNodeRendering()
        {
            RegexNodeLiteral literal1 = new RegexNodeLiteral(@"\w\b.353\s");

            Assert.AreEqual(@"\w\b.353\s", literal1.ToRegexPattern());

            literal1.Quantifier = RegexQuantifier.ZeroOrOne;
            Assert.AreEqual(@"(?:\w\b.353\s)?", literal1.ToRegexPattern());

            RegexNodeLiteral literal2 = RegexBuilder.NonEscapedLiteral(@"\w\b.353\s");

            Assert.AreEqual(@"\w\b.353\s", literal2.ToRegexPattern());

            RegexNodeLiteral literal3 = RegexBuilder.NonEscapedLiteral(@"\w\b.353\s", RegexQuantifier.ZeroOrOne);

            Assert.AreEqual(@"(?:\w\b.353\s)?", literal3.ToRegexPattern());

            RegexNodeLiteral literal4 = RegexBuilder.NonEscapedLiteral(@"\w", RegexQuantifier.ZeroOrOne);

            Assert.AreEqual(@"\w?", literal4.ToRegexPattern());

            RegexNodeLiteral literal5 = RegexBuilder.NonEscapedLiteral(@"a", RegexQuantifier.ZeroOrMore);

            Assert.AreEqual(@"a*", literal5.ToRegexPattern());
        }
        public void TestConditionalMatchNodeRendering()
        {
            RegexNodeLiteral condition  = new RegexNodeLiteral(@"\w\s");
            RegexNodeLiteral trueMatch  = new RegexNodeLiteral(@"\w\s\d{5}-[^\u005c]+");
            RegexNodeLiteral falseMatch = new RegexNodeLiteral(@"\d{5,}\u005d");

            RegexNodeConditionalMatch conditionalMatch1 = new RegexNodeConditionalMatch(condition, trueMatch, falseMatch);

            Assert.AreEqual(@"(?(\w\s)\w\s\d{5}-[^\u005c]+|\d{5,}\u005d)", conditionalMatch1.ToRegexPattern());

            conditionalMatch1.Quantifier = RegexQuantifier.OneOrMore;
            Assert.AreEqual(@"(?(\w\s)\w\s\d{5}-[^\u005c]+|\d{5,}\u005d)+", conditionalMatch1.ToRegexPattern());

            RegexNodeConditionalMatch conditionalMatch2 = new RegexNodeConditionalMatch("SomeGroup", trueMatch, falseMatch);

            Assert.AreEqual(@"(?(SomeGroup)\w\s\d{5}-[^\u005c]+|\d{5,}\u005d)", conditionalMatch2.ToRegexPattern());

            conditionalMatch2.Quantifier = RegexQuantifier.OneOrMore;
            Assert.AreEqual(@"(?(SomeGroup)\w\s\d{5}-[^\u005c]+|\d{5,}\u005d)+", conditionalMatch2.ToRegexPattern());

            RegexNodeConditionalMatch conditionalMatch3 = RegexBuilder.ConditionalMatch(condition, trueMatch, falseMatch);

            Assert.AreEqual(@"(?(\w\s)\w\s\d{5}-[^\u005c]+|\d{5,}\u005d)", conditionalMatch3.ToRegexPattern());

            conditionalMatch3 = RegexBuilder.ConditionalMatch(condition, trueMatch, falseMatch, RegexQuantifier.OneOrMore);
            Assert.AreEqual(@"(?(\w\s)\w\s\d{5}-[^\u005c]+|\d{5,}\u005d)+", conditionalMatch3.ToRegexPattern());

            RegexNodeConditionalMatch conditionalMatch4 = RegexBuilder.ConditionalMatch("SomeGroup", trueMatch, falseMatch);

            Assert.AreEqual(@"(?(SomeGroup)\w\s\d{5}-[^\u005c]+|\d{5,}\u005d)", conditionalMatch4.ToRegexPattern());

            conditionalMatch4 = RegexBuilder.ConditionalMatch("SomeGroup", trueMatch, falseMatch, RegexQuantifier.OneOrMore);
            Assert.AreEqual(@"(?(SomeGroup)\w\s\d{5}-[^\u005c]+|\d{5,}\u005d)+", conditionalMatch4.ToRegexPattern());
        }
Exemple #7
0
    public void TestAnyOfWithSingleSubRegexBuilderArgument()
    {
        var regex = new RegexBuilder()
                    .AnyOf(r => r.Text("a"))
                    .BuildRegex();

        Assert.That(regex.ToString(), Is.EqualTo(@"(?:a)"));
    }
Exemple #8
0
    public void TestAnyCharacterWithQuantifier()
    {
        var regex = new RegexBuilder()
                    .AnyCharacter(OneOrMore)
                    .BuildRegex();

        Assert.That(regex.ToString(), Is.EqualTo(@".+"));
    }
Exemple #9
0
    public void TestAnyOfWithMultipleStringArguments()
    {
        var regex = new RegexBuilder()
                    .AnyOf("a", "b")
                    .BuildRegex();

        Assert.That(regex.ToString(), Is.EqualTo(@"(?:a|b)"));
    }
Exemple #10
0
    public void TestRegexText()
    {
        var regex = new RegexBuilder()
                    .RegexText("a*b")
                    .BuildRegex();

        Assert.That(regex.ToString(), Is.EqualTo(@"a*b"));
    }
 private static RegexBuilder HtmlTag(RegexBuilder regexBuilder, string tagName, bool opening) =>
 regexBuilder
 .Text(opening ? "<" : "</")
 .PossibleWhitespace()
 .Text(tagName)
 .WordBoundary()
 .AnyCharacterExcept(">", ZeroOrMore)
 .Text(">");
Exemple #12
0
    public void TestLowercaseLetterWithQuantifier()
    {
        var regex = new RegexBuilder()
                    .LowercaseLetter(OneOrMore)
                    .BuildRegex();

        Assert.That(regex.ToString(), Is.EqualTo(@"\p{Ll}+"));
    }
Exemple #13
0
    public void TestNonHexDigitWithQuantifier()
    {
        var regex = new RegexBuilder()
                    .NonHexDigit(OneOrMore)
                    .BuildRegex();

        Assert.That(regex.ToString(), Is.EqualTo(@"[^0-9A-Fa-f]+"));
    }
Exemple #14
0
    public void TestNonHexDigit()
    {
        var regex = new RegexBuilder()
                    .NonHexDigit()
                    .BuildRegex();

        Assert.That(regex.ToString(), Is.EqualTo(@"[^0-9A-Fa-f]"));
    }
Exemple #15
0
    public void TestLowercaseHexDigitWithQuantifier()
    {
        var regex = new RegexBuilder()
                    .LowercaseHexDigit(OneOrMore)
                    .BuildRegex();

        Assert.That(regex.ToString(), Is.EqualTo(@"[0-9a-f]+"));
    }
Exemple #16
0
    public void TestLowercaseHexDigit()
    {
        var regex = new RegexBuilder()
                    .LowercaseHexDigit()
                    .BuildRegex();

        Assert.That(regex.ToString(), Is.EqualTo(@"[0-9a-f]"));
    }
Exemple #17
0
    public void TestRegexTextWithQuantifier()
    {
        var regex = new RegexBuilder()
                    .RegexText("a*b", OneOrMore)
                    .BuildRegex();

        Assert.That(regex.ToString(), Is.EqualTo(@"(?:a*b)+"));
    }
Exemple #18
0
    public void TesNonLetterOrDigitWithQuantifier()
    {
        var regex = new RegexBuilder()
                    .NonLetterOrDigit(OneOrMore)
                    .BuildRegex();

        Assert.That(regex.ToString(), Is.EqualTo(@"[^\p{L}0-9]+"));
    }
Exemple #19
0
    public void TestNonLetterOrDigit()
    {
        var regex = new RegexBuilder()
                    .NonLetterOrDigit()
                    .BuildRegex();

        Assert.That(regex.ToString(), Is.EqualTo(@"[^\p{L}0-9]"));
    }
Exemple #20
0
    public void TestWhitespaceWithQuantifier()
    {
        var regex = new RegexBuilder()
                    .Whitespace(OneOrMore)
                    .BuildRegex();

        Assert.That(regex.ToString(), Is.EqualTo(@"\s+"));
    }
Exemple #21
0
    public void TestNonWhitespace()
    {
        var regex = new RegexBuilder()
                    .NonWhitespace()
                    .BuildRegex();

        Assert.That(regex.ToString(), Is.EqualTo(@"\S"));
    }
Exemple #22
0
    public void TestStartOfString()
    {
        var regex = new RegexBuilder()
                    .StartOfString()
                    .BuildRegex();

        Assert.That(regex.ToString(), Is.EqualTo(@"^"));
    }
Exemple #23
0
    public void TestNonWordCharacter()
    {
        var regex = new RegexBuilder()
                    .NonWordCharacter()
                    .BuildRegex();

        Assert.That(regex.ToString(), Is.EqualTo(@"[^\p{L}0-9_]"));
    }
Exemple #24
0
    public void TestLowercaseLetter()
    {
        var regex = new RegexBuilder()
                    .LowercaseLetter()
                    .BuildRegex();

        Assert.That(regex.ToString(), Is.EqualTo(@"\p{Ll}"));
    }
Exemple #25
0
    public void TestWordBoundary()
    {
        var regex = new RegexBuilder()
                    .WordBoundary()
                    .BuildRegex();

        Assert.That(regex.ToString(), Is.EqualTo(@"\b"));
    }
Exemple #26
0
    public void TestNonWordCharacterWithQuantifier()
    {
        var regex = new RegexBuilder()
                    .NonWordCharacter(OneOrMore)
                    .BuildRegex();

        Assert.That(regex.ToString(), Is.EqualTo(@"[^\p{L}0-9_]+"));
    }
Exemple #27
0
    public void TestNonLetter()
    {
        var regex = new RegexBuilder()
                    .NonLetter()
                    .BuildRegex();

        Assert.That(regex.ToString(), Is.EqualTo(@"\P{L}"));
    }
Exemple #28
0
    public void TestAnyCharacterExceptWithQuantifier()
    {
        var regex = new RegexBuilder()
                    .AnyCharacterExcept("^]", OneOrMore)
                    .BuildRegex();

        Assert.That(regex.ToString(), Is.EqualTo(@"[^\^\]]+"));
    }
Exemple #29
0
    public void TestAnyCharacterExcept()
    {
        var regex = new RegexBuilder()
                    .AnyCharacterExcept("^]")
                    .BuildRegex();

        Assert.That(regex.ToString(), Is.EqualTo(@"[^\^\]]"));
    }
Exemple #30
0
    public void TestNonLetterWithQuantifier()
    {
        var regex = new RegexBuilder()
                    .NonLetter(OneOrMore)
                    .BuildRegex();

        Assert.That(regex.ToString(), Is.EqualTo(@"\P{L}+"));
    }