Regular expression help

Andrew Bennetts andrew-pythonlist at
Fri Jul 18 07:07:40 CEST 2003

On Fri, Jul 18, 2003 at 04:31:32AM +0000, David Lees wrote:
> Andrew Bennetts wrote:
> >
> >How about re.findall?


> 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 ']

Oh!  So it does.  I presumed it took an optional flags argument, like, but it doesn't.  Compiling the pattern with re.M doesn't seem to
help (and I can't figure out how to include the flag inline -- "(?M)"
doesn't seem to work).

On the other hand, this hack does work:

>>> re.findall('BEGIN((?:.|\\n)*?)END', 'BEGIN foo\nmumble END   BEGIN bar END')
[' foo\nmumble ', ' bar ']

(There's probably a more elegant way to do that, but I'm not a re expert)


More information about the Python-list mailing list