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