[ python-Bugs-214033 ] re incompatibility in sre
SourceForge.net
noreply at sourceforge.net
Wed Mar 21 18:49:23 CET 2007
Bugs item #214033, was opened at 2000-09-11 04:24
Message generated for change (Comment added) made by collinwinter
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=214033&group_id=5470
Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: Extension Modules
Group: None
Status: Open
Resolution: Accepted
Priority: 5
Private: No
Submitted By: Martin v. Löwis (loewis)
Assigned to: Fredrik Lundh (effbot)
Summary: re incompatibility in sre
Initial Comment:
[submitted by Adam Sampson]
Under Python 1.5.2, I had a script containing the following line:
m = re.match(r"[a-z0-9]*://[^/]+/.*\.([^.#\?/]*)([#\?]?.*)?", url)
Under 1.6, this fails with:
[...]
File "/usr/local/lib/python1.6/sre.py", line 44, in match
return _compile(pattern, flags).match(string)
File "/usr/local/lib/python1.6/sre.py", line 102, in _compile
raise error, v # invalid expression
sre_constants.error: nothing to repeat
I can narrow it down to:
>>> m = re.match(r"(x?)?", url)
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "/usr/local/lib/python1.6/sre.py", line 44, in match
return _compile(pattern, flags).match(string)
File "/usr/local/lib/python1.6/sre.py", line 102, in _compile
raise error, v # invalid expression
sre_constants.error: nothing to repeat
whereas:
>>> m = re.match(r"(x?.)?", url)
works fine. Is this correct behaviour for SRE, or am I just being stupid?
"(x?)?" looks like a perfectly reasonable Perl-style regexp to me (and Perl
too)...
----------------------------------------------------------------------
>Comment By: Collin Winter (collinwinter)
Date: 2007-03-21 13:49
Message:
Logged In: YES
user_id=1344176
Originator: NO
The original bug no longer applies to Python 2.5.0 or 2.6a0. Trent's bug
still exists in Python 2.5.0 and 2.6a0 (where 2.6a0 == SVN r54478).
----------------------------------------------------------------------
Comment By: Georg Brandl (gbrandl)
Date: 2006-06-01 09:45
Message:
Logged In: YES
user_id=849994
#1456280 is a duplicate of this.
----------------------------------------------------------------------
Comment By: Trent Mick (tmick)
Date: 2006-04-10 19:11
Message:
Logged In: YES
user_id=34892
I've run into another incarnation of this (it breaks in
Python 2.3.5 and Python 2.4.3):
>>> import sre
>>> sre.compile("(a*)?")
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "C:\Python24\Lib\sre.py", line 180, in compile
return _compile(pattern, flags)
File "C:\Python24\Lib\sre.py", line 227, in _compile
raise error, v # invalid expression
sre_constants.error: nothing to repeat
Now granted that the '?' here is redundant for the '*'
quantifier on 'a', but compiling this regex works with
Python 2.3's "pre" and it works in Perl.
The actual use case I've hit here is trying to compile all
the regex's in Fedora Core 5's SELinux config files
(/etc/selinux/targeted/contexts/files/file_contexts*). The
first such regex that broke was:
'/usr/share/selinux-policy([^/]*)?/html(/.*)?'
----------------------------------------------------------------------
Comment By: Martin v. Löwis (loewis)
Date: 2000-10-01 14:13
Message:
Yes, it is still broken in 2.0b2.
----------------------------------------------------------------------
Comment By: Guido van Rossum (gvanrossum)
Date: 2000-10-01 00:33
Message:
Martin, is this still broken in 2.0? Fredrik, any idea?
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=214033&group_id=5470
More information about the Python-bugs-list
mailing list