- added support for (?P=name)

(closes #3 and #7 from the status report)
This commit is contained in:
Fredrik Lundh 2000-06-30 09:13:06 +00:00
parent c155f828fa
commit b71624e698
2 changed files with 17 additions and 6 deletions

View file

@ -189,9 +189,9 @@ def isname(name):
def _group(escape, groups):
# check if the escape string represents a valid group
try:
group = int(escape[1:])
if group and group < groups:
return group
gid = int(escape[1:])
if gid and gid < groups:
return gid
except ValueError:
pass
return None # not a valid group
@ -442,7 +442,20 @@ def _parse(source, state, flags=0):
raise error, "illegal character in group name"
elif source.match("="):
# named backreference
raise error, "not yet implemented"
name = ""
while 1:
char = source.get()
if char is None:
raise error, "unterminated name"
if char == ")":
break
name = name + char
if not isname(name):
raise error, "illegal character in group name"
gid = state.groupdict.get(name)
if gid is None:
raise error, "unknown group name"
subpattern.append((GROUP, gid))
else:
char = source.get()
if char is None: