Skip to content

Quantifiers

OneOrMore

Bases: RegexComponent

A regex component that matches one or more occurrences of the supplied regex components.

Source code in src/pyregexbuilder/quantifiers.py
41
42
43
44
45
46
47
48
49
class OneOrMore(RegexComponent):
    """
    A regex component that matches one or more occurrences of the supplied regex components.
    """

    def __init__(
        self, *components: str | RegexComponent, greed: Greed = Greed.GREEDY
    ) -> None:
        self._regex = rf"(?:{self.parse(*components)})+{greed.value}"

Optionally

Bases: RegexComponent

A regex component that matches zero or one occurrences of the supplied regex components.

Source code in src/pyregexbuilder/quantifiers.py
19
20
21
22
23
24
25
26
27
class Optionally(RegexComponent):
    """
    A regex component that matches zero or one occurrences of the supplied regex components.
    """

    def __init__(
        self, *components: str | RegexComponent, greed: Greed = Greed.GREEDY
    ) -> None:
        self._regex = rf"(?:{self.parse(*components)})?{greed.value}"

Repeat

Bases: RegexComponent

A regex component that matches the specified number of occurrences of the supplied regex components.

Source code in src/pyregexbuilder/quantifiers.py
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
class Repeat(RegexComponent):
    """
    A regex component that matches the specified number of occurrences of the supplied regex components.
    """

    def __init__(
        self,
        *components: str | RegexComponent,
        count: int | None = None,
        minimum: int | None = None,
        maximum: int | None = None,
        greed: Greed = Greed.GREEDY,
    ) -> None:
        if (count and (minimum or maximum)) or not (any((count, minimum, maximum))):
            raise RegexBuilderException(
                "Must specify either `count` OR `minimum` and/or `maximum`."
            )

        if count:
            self._regex = rf"(?:{self.parse(*components)}{{{count}}})"
        else:
            m = minimum if minimum else ""
            n = maximum if maximum else ""
            self._regex = rf"(?:{self.parse(*components)}){{{m},{n}}}{greed.value}"

ZeroOrMore

Bases: RegexComponent

A regex component that matches zero or more occurrences of the supplied regex components.

Source code in src/pyregexbuilder/quantifiers.py
30
31
32
33
34
35
36
37
38
class ZeroOrMore(RegexComponent):
    """
    A regex component that matches zero or more occurrences of the supplied regex components.
    """

    def __init__(
        self, *components: str | RegexComponent, greed: Greed = Greed.GREEDY
    ) -> None:
        self._regex = rf"(?:{self.parse(*components)})*{greed.value}"