Question on re.IGNORECASE

Kent Johnson kent37 at tds.net
Thu Oct 20 15:10:33 EDT 2005


chemag at gmail.com wrote:
> Hi,
> 
> I'm having some problems with basic RE in python. I was wondering
> whether
> somebody could provide a hint on what's going wrong with the following
> script. Comments are included.
> 
> TIA.
> -myself
> 
> 
>>python2.3
> 
> Python 2.3.4 (#1, Nov 18 2004, 13:39:30)
> [GCC 3.2.3 20030502 (Red Hat Linux 3.2.3-39)] on linux2
> Type "help", "copyright", "credits" or "license" for more information.
> 
>>>>import re
>>>>pattern = re.compile('.*HTTP/(\d\.\d) *(\d*) *(.*)$')
>>>>pattern.search("GGHTTP/1.1 200 OK\r\n", re.IGNORECASE)
> 
> <_sre.SRE_Match object at 0xb75c6ed0>
> 
>>>>pattern.search("GHTTP/1.1 200 OK\r\n", re.IGNORECASE)
> 
> # this makes no sense to me. Why is the previous line matched

Because the second argument to pattern.search() is the position where the search starts, not a flag. re.IGNORECASE == 2 so your search is skipping the first two chars.

Try giving the flags as a second argument to re.compile():
 >>> import re
 >>> re.IGNORECASE
2
 >>> pattern = re.compile('.*HTTP/(\d\.\d) *(\d*) *(.*)$', re.IGNORECASE)
 >>> pattern.search("GGHTTP/1.1 200 OK\r\n")
<_sre.SRE_Match object at 0x00965980>
 >>> pattern.search("GHTTP/1.1 200 OK\r\n")
<_sre.SRE_Match object at 0x009659D0>
 >>> pattern.search("Ghttp/1.1 200 OK\r\n")
<_sre.SRE_Match object at 0x009651B0>

Kent


> # and this not?
> 
>>>>pattern.search("GHTTP/1.1 200 OK\r\n")
> 
> <_sre.SRE_Match object at 0xb758d020>
> 



More information about the Python-list mailing list