In general, I find it is easier to use flags (at least easier to remember how), like re.I when compiling patterns than to use flags inline.
>>> foo_pat = re.compile('foo',re.I)
>>> foo_pat.findall('some string FoO bar')
['FoO']
vs
>>> re.findall('(?i)foo','some string FoO bar')
['FoO']