コード例 #1
0
ファイル: braces.py プロジェクト: rinslow/regene
    def before(self) -> RegularExpression:
        try:
            start = self.start_index()
            parts_before = self.expression.parts()[:start]
            return RegularExpression(parts_before)

        except IndexError:
            return RegularExpression("")
コード例 #2
0
ファイル: braces.py プロジェクト: rinslow/regene
    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("")
コード例 #3
0
ファイル: braces.py プロジェクト: rinslow/regene
    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
コード例 #4
0
ファイル: braces.py プロジェクト: rinslow/regene
    def __init__(self,
                 expression: Union[RegularExpression, str],
                 latest: int = 0):
        if isinstance(expression, str):
            expression = RegularExpression(expression)

        self.expression = expression
        self.latest = latest
コード例 #5
0
 def test_quantifiers(self):
     assert RegularExpression("**??++?+?*").parts() == [
         "*",
         "*",
         "?",
         "?",
         "+",
         "+",
         "?",
         "+",
         "?",
         "*",
     ]
コード例 #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() == ["]", "]", "]", "["]
コード例 #7
0
 def test_between(self):
     quantifier = QuantifierFactory.get(RegularExpression("{5,6}"))
     assert quantifier.quantify(String("4")) == "44444"
コード例 #8
0
 def test_exactly(self):
     quantifier = QuantifierFactory.get(RegularExpression("{3}"))
     assert quantifier.quantify(String("4")) == "444"
コード例 #9
0
 def test_question_mark(self):
     quantifier = QuantifierFactory.get(RegularExpression("?"))
     assert quantifier.quantify(String("4")) == ""
コード例 #10
0
ファイル: braces.py プロジェクト: rinslow/regene
 def all(self) -> RegularExpression:
     start, end = self.indices()
     parts = self.expression.parts()[start:end + 1]
     return RegularExpression(parts)
コード例 #11
0
ファイル: test_compose.py プロジェクト: rinslow/regene
 def test_nested_hierarchies(self):
     assert list(Peeler(RegularExpression("((abc))"))) == ["((abc))"]
コード例 #12
0
ファイル: test_compose.py プロジェクト: rinslow/regene
 def test_hierarchies_of_same_level_when_group_content_is_equal(self):
     assert list(Peeler(
         RegularExpression("(abc)f(abc)"))) == ["(abc)", "f", "(abc)"]
コード例 #13
0
ファイル: test_compose.py プロジェクト: rinslow/regene
 def test_hierarchies_one_after_another(self):
     assert list(Peeler(
         RegularExpression("(abc)(abc)"))) == ["(abc)", "(abc)"]
コード例 #14
0
 def test_plus(self):
     quantifier = QuantifierFactory.get(RegularExpression("+"))
     assert quantifier.quantify(String("4")) == "4"
コード例 #15
0
 def test_value_or_more(self):
     quantifier = QuantifierFactory.get(RegularExpression("{4,}"))
     assert quantifier.quantify(String("4")) == "4444"
コード例 #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}"]
コード例 #17
0
 def test_exists(self):
     assert not Braces.exists(RegularExpression("ab"))
     assert Braces.exists(RegularExpression("ab()"))
コード例 #18
0
 def test_value_or_less(self):
     quantifier = QuantifierFactory.get(RegularExpression("{,4}"))
     assert quantifier.quantify(String("4")) == ""
コード例 #19
0
 def test_character_sets(self):
     assert RegularExpression("a-zA-Z").parts() == ["a-z", "A-Z"]
コード例 #20
0
ファイル: test_compose.py プロジェクト: rinslow/regene
 def def_test_single_hierarchy(self):
     assert list(Peeler(RegularExpression("(abc)"))) == ["(abc)"]
コード例 #21
0
 def test_complex_regular_expressions(self):
     assert RegularExpression("(abc)+").parts() == ["(", "abc", ")", "+"]
     assert RegularExpression("[^A-Zd]+?").parts() == [
         "[", "^", "A-Z", "d", "]", "+", "?"
     ]
コード例 #22
0
ファイル: test_compose.py プロジェクト: rinslow/regene
 def test_hierarchies_of_same_level(self):
     assert list(Peeler(
         RegularExpression("(abc)d(efg)"))) == ["(abc)", "d", "(efg)"]
コード例 #23
0
 def test_string_between_braces(self):
     assert RegularExpression("(abc)f(abc)").parts() == [
         "(", "abc", ")", "f", "(", "abc", ")"
     ]
コード例 #24
0
ファイル: test_compose.py プロジェクト: rinslow/regene
 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,}"
     ])
コード例 #25
0
 def test_string(self):
     assert RegularExpression("abc").parts() == ["abc"]
     assert RegularExpression("abc4").parts() == ["abc4"]
コード例 #26
0
ファイル: test_compose.py プロジェクト: rinslow/regene
 def test_no_hierarchy(self):
     assert list(Peeler(RegularExpression("abc+"))) == ["abc", "+"]
コード例 #27
0
ファイル: regene.py プロジェクト: rinslow/regene
 def simple(self) -> str:
     """Minimal string that would match a given expression."""
     return str(Composer(RegularExpression(self.expression)).enter())