Python 2.7 re.IGNORECASE broken in re.sub?

Christopher nadiasvertex at gmail.com
Sun Aug 15 19:45:49 EDT 2010


I have the following problem:

Python 2.7 (r27:82525, Jul  4 2010, 07:43:08) [MSC v.1500 64 bit
(AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> t="Python26"
>>> import re
>>> re.sub(r"python\d\d", "Python27", t)
'Python26'
>>> re.sub(r"python\d\d", "Python27", t, re.IGNORECASE)
'Python26'
>>> re.sub(r"Python\d\d", "Python27", t, re.IGNORECASE)
'Python27'
>>>

---

Perhaps this is intended behavior, but it seems like the last two
results should be the same, not the first two.  In other words, the
call to re.sub with re.IGNORECASE on should return "Python27" not
"Python26".

This appears to be the case when using compiled pattern matching:

>>> r=re.compile(r"python\d\d", re.IGNORECASE)
>>> r.sub("Python27", t)
'Python27'

---

Is this a known bug?  Is it by design for some odd reason?



More information about the Python-list mailing list