diff options
author | Fredrik Lundh <fredrik@pythonware.com> | 2000-06-29 08:58:44 (GMT) |
---|---|---|
committer | Fredrik Lundh <fredrik@pythonware.com> | 2000-06-29 08:58:44 (GMT) |
commit | 436c3d58a2570f3b599e59b4071f944f774ec441 (patch) | |
tree | 0e2e1634bbeae51a1322d616943acc71211b475d /Lib/sre.py | |
parent | 102f3ad676be1ef18fd9185b0dfb6c2796a6f8ac (diff) | |
download | cpython-436c3d58a2570f3b599e59b4071f944f774ec441.zip cpython-436c3d58a2570f3b599e59b4071f944f774ec441.tar.gz cpython-436c3d58a2570f3b599e59b4071f944f774ec441.tar.bz2 |
towards 1.6b1
Diffstat (limited to 'Lib/sre.py')
-rw-r--r-- | Lib/sre.py | 23 |
1 files changed, 17 insertions, 6 deletions
@@ -12,6 +12,7 @@ # import sre_compile +import sre_parse # flags I = IGNORECASE = sre_compile.SRE_FLAG_IGNORECASE @@ -20,6 +21,13 @@ M = MULTILINE = sre_compile.SRE_FLAG_MULTILINE S = DOTALL = sre_compile.SRE_FLAG_DOTALL X = VERBOSE = sre_compile.SRE_FLAG_VERBOSE +# sre extensions (may or may not be in 1.6 final) +T = TEMPLATE = sre_compile.SRE_FLAG_TEMPLATE +U = UNICODE = sre_compile.SRE_FLAG_UNICODE + +# sre exception +error = sre_parse.error + # -------------------------------------------------------------------- # public interface @@ -46,6 +54,9 @@ def findall(pattern, string, maxsplit=0): def compile(pattern, flags=0): return _compile(pattern, flags) +def template(pattern, flags=0): + return _compile(pattern, flags|T) + def escape(pattern): s = list(pattern) for i in range(len(pattern)): @@ -83,18 +94,14 @@ def _sub(pattern, template, string, count=0): # internal: pattern.sub implementation hook return _subn(pattern, template, string, count)[0] -def _expand(match, template): - # internal: expand template - return template # FIXME - def _subn(pattern, template, string, count=0): # internal: pattern.subn implementation hook if callable(template): filter = template else: - # FIXME: prepare template + template = sre_parse.parse_template(template, pattern) def filter(match, template=template): - return _expand(match, template) + return sre_parse.expand_template(template, match) n = i = 0 s = [] append = s.append @@ -108,6 +115,8 @@ def _subn(pattern, template, string, count=0): append(string[i:j]) append(filter(m)) i = m.end() + if i <= j: + break n = n + 1 if i < len(string): append(string[i:]) @@ -126,6 +135,8 @@ def _split(pattern, string, maxsplit=0): j = m.start() append(string[i:j]) i = m.end() + if i <= j: + break n = n + 1 if i < len(string): append(string[i:]) |