30 self.name, self.
argsargs =
None, []
33 return self.name
is not None
40 _regexp_extension = re.compile(
r'(?<!\\)\(\?.+\)')
44 _regexp_group_start = re.compile(
r'(?<!\\)\((.*?)\)')
48 _regexp_group_escape =
r'(?:\1)'
52 _default_pattern =
'.*?'
56 _variable_pattern =
r'\$\{[^\}]+\}'
61 for before, variable, string
in VariableIterator(string, identifiers=
'$'):
64 name_regexp.extend([re.escape(before),
'(%s)' % pattern])
65 name_regexp.extend([re.escape(string),
'$'])
66 name = self.
_compile_regexp_compile_regexp(name_regexp)
if args
else None
72 name, pattern = name.split(
':', 1)
80 pattern = formatter(pattern)
86 raise DataError(
'Regexp extensions are not allowed in embedded '
93 return pattern.replace(
'\\}',
'}')
100 return re.compile(
''.join(pattern), re.IGNORECASE)
102 raise DataError(
"Compiling embedded arguments regexp failed: %s"
Used when variable does not exist.
def _add_automatic_variable_pattern(self, pattern)
def _get_name_and_pattern(self, name)
def _unescape_closing_curly(self, pattern)
def _regexp_extensions_are_not_allowed(self, pattern)
def _format_custom_regexp(self, pattern)
def _compile_regexp(self, pattern)
def _make_groups_non_capturing(self, pattern)
string _regexp_group_escape
def get_error_message()
Returns error message of the last occurred exception.