Regular expression help
Tony Meyer
ta-meyer at ihug.co.nz
Fri Jul 18 00:49:58 EDT 2003
> > How about re.findall?
> > >>> re.findall('BEGIN(.*?)END', 'BEGIN foo END BEGIN
> bar END')
> > [' foo ', ' bar ']
>
> Actually this fails with the multi-line type of file I was
> asking about.
>
> >>> re.findall('BEGIN(.*?)END', 'BEGIN foo\nmumble END
> BEGIN bar END')
> [' bar ']
You need the re.DOTALL flag. I don't think you can pass this to the findall
function, but you can if you compile the re, eg:
>>> import re
>>> r = re.compile('BEGIN(.*?)END', re.DOTALL)
>>> r.findall('BEGIN foo\nmumble END BEGIN bar END')
[' foo\nmumble ', ' bar ']
=Tony Meyer
More information about the Python-list
mailing list