This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: Traceback error when compiling Regex
Type: Stage:
Components: Regular Expressions Versions: Python 2.4
process
Status: closed Resolution: duplicate
Dependencies: Superseder: re incompatibility in sre
View: 214033
Assigned To: niemeyer Nosy List: georg.brandl, grafen, niemeyer, timehorse
Priority: normal Keywords:

Created on 2006-03-22 17:34 by grafen, last changed 2022-04-11 14:56 by admin. This issue is now closed.

Messages (3)
msg27847 - (view) Author: Wolfgang Grafen (grafen) Date: 2006-03-22 17:34
Traceback error when compiling the following regular
expression. Error discovered with Python 2.4.2.
Used pre from python2.3 to check the validity of
re_fmt. With pre it works fine.

Question:
I submitted a sre error report before and I warned
to take off pre from the library. It is of advantage
to be able to check a failing re with pre. Personally
I feel sre has still too many bugs to completely
substitute pre.

Regards

Wolfgang Grafen

======================================================

chios scalar 582 % ./fmtscalar.py
Traceback (most recent call last):
  File "./fmtscalar.py", line 21, in ?
    re_fmt = re.compile(
  File "/user/freepool/local/lib/python2.3/sre.py",
line 179, in compile
    return _compile(pattern, flags)
  File "/user/freepool/local/lib/python2.3/sre.py",
line 230, in _compile
    raise error, v # invalid expression
sre_constants.error: nothing to repeat

---- cut here ----
#!/usr/bin/env python2.3
# -*- coding: Latin-1 -*-

import sre as re

re_fmt = re.compile(
                        "("
                            "%"
                            "(?P<precision>"
                                "\d+"
                                "(?:"
                                    "[.]"
                                    "\d+"
                                ")"
                            ")?"
                            "(?:"
                                "[(]"
                                "(?P<key>"
                                    "[^)]*"
                                ")?"
                                "[)]"
                            ")?"
                            "(?P<c>[a-z])"
                        ")"
                    )

a="%s"
b="aber%sxyz"
c="aber%3.1i"
c="aber%(quengel)s"

for i in a,b,c:
    m = re_fmt.findall(i)
    print i,m
---- cut here ---
msg27848 - (view) Author: Georg Brandl (georg.brandl) * (Python committer) Date: 2006-06-01 13:46
Logged In: YES 
user_id=849994

Duplicate of #214033.
msg74684 - (view) Author: Jeffrey C. Jacobs (timehorse) Date: 2008-10-13 13:09
This is another version of the redundant repeat issue defined in issues 
2537 and 1633953 and although not described by the original report for 
issue 214033, the comments further down that issue also describe a 
similar situation.

In this case, the problem arises from the '[(](?P<key>[^)]*)?[)]' 
portion of your regexp code because you have a zero-or-more repeat 
repeated zero-or-one times, which in the current version of python 
causes this error.  Technically, the outer zero-or-one operator ('?') is 
redundant and you can eliminate it, but this IMHO should not cause the 
error listed below and I will look into a solution in issue 2636.
History
Date User Action Args
2022-04-11 14:56:16adminsetgithub: 43072
2008-10-13 13:09:07timehorsesetmessages: + msg74684
2008-09-28 19:36:07timehorsesetnosy: + timehorse
2007-09-10 20:59:40brett.cannonsetsuperseder: re incompatibility in sre
title: Traceback error when compiling Regex -> Traceback error when compiling Regex
2006-03-22 17:34:26grafencreate