Python regex, matching pattern over multiple lines.. why isn't this working?

parsing, python, regex

Solution

Try `re.findall(r"####(.*?)\s(.*?)\s####", string, re.DOTALL)` (works with `re.compile` too, of course).

This regexp will return tuples containing the number of the section and the section content.

For your example, this will return `[('1', 'ttteest'), ('2', ' \n\nttest')]`.

(BTW: your example won't run, for multiline strings, use `'''` or `"""`)

Problem

I know that for parsing I should ideally remove all spaces and linebreaks but I was just doing this as a quick fix for something I was trying and I can't figure out why its not working.. I have wrapped different areas of text in my document with the wrappers like "####1" and am trying to parse based on this but its just not working no matter what I try, I think I am using multiline correctly.. any advice is appreciated This returns no results at all: ``` string=' ####1 ttteest ####1 ttttteeeestt ####2 ttest ####2' import re pattern = '.*?####(.*?)####' returnmatch = re.compile(pattern, re.MULTILINE).findall(string) return returnmatch ```

Original source