Ejemplo n.º 1
0
    def before(self) -> RegularExpression:
        try:
            start = self.start_index()
            parts_before = self.expression.parts()[:start]
            return RegularExpression(parts_before)

        except IndexError:
            return RegularExpression("")
Ejemplo n.º 2
0
    def within(self) -> RegularExpression:
        try:
            start, end = self.indices()
            parts_within = self.expression.parts()[start + 1:end]
            return RegularExpression(parts_within)

        except IndexError:
            return RegularExpression("")
Ejemplo n.º 3
0
    def after(self) -> RegularExpression:
        try:
            start, end = self.indices()
            parts_after = self.expression.parts()[end + 1:]
            return RegularExpression(parts_after)

        except IndexError:
            return self.expression
Ejemplo n.º 4
0
    def __init__(self,
                 expression: Union[RegularExpression, str],
                 latest: int = 0):
        if isinstance(expression, str):
            expression = RegularExpression(expression)

        self.expression = expression
        self.latest = latest
Ejemplo n.º 5
0
 def test_quantifiers(self):
     assert RegularExpression("**??++?+?*").parts() == [
         "*",
         "*",
         "?",
         "?",
         "+",
         "+",
         "?",
         "+",
         "?",
         "*",
     ]
Ejemplo n.º 6
0
    def test_braces(self):
        # Braces
        assert RegularExpression("(").parts() == ["("]
        assert RegularExpression("()").parts() == ["(", ")"]
        assert RegularExpression(")))(").parts() == [")", ")", ")", "("]

        # Brackets
        assert RegularExpression("[").parts() == ["["]
        assert RegularExpression("[]").parts() == ["[", "]"]
        assert RegularExpression("]]][").parts() == ["]", "]", "]", "["]
Ejemplo n.º 7
0
 def test_between(self):
     quantifier = QuantifierFactory.get(RegularExpression("{5,6}"))
     assert quantifier.quantify(String("4")) == "44444"
Ejemplo n.º 8
0
 def test_exactly(self):
     quantifier = QuantifierFactory.get(RegularExpression("{3}"))
     assert quantifier.quantify(String("4")) == "444"
Ejemplo n.º 9
0
 def test_question_mark(self):
     quantifier = QuantifierFactory.get(RegularExpression("?"))
     assert quantifier.quantify(String("4")) == ""
Ejemplo n.º 10
0
 def all(self) -> RegularExpression:
     start, end = self.indices()
     parts = self.expression.parts()[start:end + 1]
     return RegularExpression(parts)
Ejemplo n.º 11
0
 def test_nested_hierarchies(self):
     assert list(Peeler(RegularExpression("((abc))"))) == ["((abc))"]
Ejemplo n.º 12
0
 def test_hierarchies_of_same_level_when_group_content_is_equal(self):
     assert list(Peeler(
         RegularExpression("(abc)f(abc)"))) == ["(abc)", "f", "(abc)"]
Ejemplo n.º 13
0
 def test_hierarchies_one_after_another(self):
     assert list(Peeler(
         RegularExpression("(abc)(abc)"))) == ["(abc)", "(abc)"]
Ejemplo n.º 14
0
 def test_plus(self):
     quantifier = QuantifierFactory.get(RegularExpression("+"))
     assert quantifier.quantify(String("4")) == "4"
Ejemplo n.º 15
0
 def test_value_or_more(self):
     quantifier = QuantifierFactory.get(RegularExpression("{4,}"))
     assert quantifier.quantify(String("4")) == "4444"
Ejemplo n.º 16
0
 def test_fixed_quantifiers(self):
     assert RegularExpression("a{0}").parts() == ["a", "{0}"]
     assert RegularExpression("a{0,}").parts() == ["a", "{0,}"]
     assert RegularExpression("a{,0}").parts() == ["a", "{,0}"]
     assert RegularExpression("a{0,0}").parts() == ["a", "{0,0}"]
Ejemplo n.º 17
0
 def test_exists(self):
     assert not Braces.exists(RegularExpression("ab"))
     assert Braces.exists(RegularExpression("ab()"))
Ejemplo n.º 18
0
 def test_value_or_less(self):
     quantifier = QuantifierFactory.get(RegularExpression("{,4}"))
     assert quantifier.quantify(String("4")) == ""
Ejemplo n.º 19
0
 def test_character_sets(self):
     assert RegularExpression("a-zA-Z").parts() == ["a-z", "A-Z"]
Ejemplo n.º 20
0
 def def_test_single_hierarchy(self):
     assert list(Peeler(RegularExpression("(abc)"))) == ["(abc)"]
Ejemplo n.º 21
0
 def test_complex_regular_expressions(self):
     assert RegularExpression("(abc)+").parts() == ["(", "abc", ")", "+"]
     assert RegularExpression("[^A-Zd]+?").parts() == [
         "[", "^", "A-Z", "d", "]", "+", "?"
     ]
Ejemplo n.º 22
0
 def test_hierarchies_of_same_level(self):
     assert list(Peeler(
         RegularExpression("(abc)d(efg)"))) == ["(abc)", "d", "(efg)"]
Ejemplo n.º 23
0
 def test_string_between_braces(self):
     assert RegularExpression("(abc)f(abc)").parts() == [
         "(", "abc", ")", "f", "(", "abc", ")"
     ]
Ejemplo n.º 24
0
 def test_hierarchies_of_same_level_of_different_types_of_braces(self):
     assert (list(Peeler(RegularExpression("(abc)[0-9A-Zf]{6,}"))) == [
         "(abc)", "[0-9A-Zf]", "{6,}"
     ])
Ejemplo n.º 25
0
 def test_string(self):
     assert RegularExpression("abc").parts() == ["abc"]
     assert RegularExpression("abc4").parts() == ["abc4"]
Ejemplo n.º 26
0
 def test_no_hierarchy(self):
     assert list(Peeler(RegularExpression("abc+"))) == ["abc", "+"]
Ejemplo n.º 27
0
 def simple(self) -> str:
     """Minimal string that would match a given expression."""
     return str(Composer(RegularExpression(self.expression)).enter())