python 2.6.8
s= '''
foo
bar
baz
'''
>>>re.findall(r'^\S*',s,re.MULTILINE)
['', 'foo', 'bar', 'baz', '']
>>>ptrn = re.compile(r'^\S*',re.MULTILINE)
>>>ptrn.findall(s)
['', 'foo', 'bar', 'baz', '']
>>>ptrn.findall(s,re.MULTILINE)
['baz', '']
Why is there a difference between using MULTILINE flag in findall?
When calling the
findall()method on a regex object, the second parameter is not theflagsargument (because that has already been used when compiling the regex) but theposargument, telling the regex engine at which point in the string to start matching.re.MULTILINEis just an integer (that happens to be8).See the docs.