Source code for maha.rexy.rexy
""" Module contains functions that help organize common regex patterns """
from __future__ import annotations
__all__ = [
"optional_non_capturing_group",
"non_capturing_group",
"positive_lookbehind",
"positive_lookahead",
"named_group",
"capture_group",
]
from maha.rexy.templates import Expression
[docs]def non_capturing_group(*patterns: Expression | str):
"""Returns a non capturing groups of patterns."""
return "(?:{})".format("|".join(str(p) for p in patterns))
[docs]def optional_non_capturing_group(*patterns: Expression | str):
"""Returns an optional non capturing group of patterns."""
return "(?:{})?".format("|".join(str(p) for p in patterns))
[docs]def positive_lookbehind(*patterns: Expression | str):
"""Returns a positive lookbehind pattern."""
return "(?<={})".format("|".join(str(p) for p in patterns))
[docs]def positive_lookahead(*patterns: Expression | str):
"""Returns positive lookahead pattern"""
return "(?={})".format("|".join(str(p) for p in patterns))
[docs]def named_group(name: str, pattern: Expression | str):
"""Returns named pattern group"""
return f"(?P<{name}>{pattern})"
[docs]def capture_group(*patterns: Expression | str):
"""Returns a capturing group pattern"""
return "({})".format("|".join(str(p) for p in patterns))