return string
-PREFIX_END = r'[^0-9@#.,]'
-NUMBER_TOKEN = r'[0-9@#.,E+]'
-
-PREFIX_PATTERN = r"(?P<prefix>(?:'[^']*'|%s)*)" % PREFIX_END
-NUMBER_PATTERN = r"(?P<number>%s*)" % NUMBER_TOKEN
-SUFFIX_PATTERN = r"(?P<suffix>.*)"
-
-number_re = re.compile(f"{PREFIX_PATTERN}{NUMBER_PATTERN}{SUFFIX_PATTERN}")
+_number_pattern_re = re.compile(
+ r"(?P<prefix>(?:[^'0-9@#.,]|'[^']*')*)"
+ r"(?P<number>[0-9@#.,E+]*)"
+ r"(?P<suffix>.*)",
+)
def parse_grouping(p: str) -> tuple[int, int]:
return pattern
def _match_number(pattern):
- rv = number_re.search(pattern)
+ rv = _number_pattern_re.search(pattern)
if rv is None:
raise ValueError(f"Invalid number pattern {pattern!r}")
return rv.groups()