On Sun, 27 Oct 2013 21:09:46 -0000, Marc <m...@marcd.org> wrote:

Hi,
I am having an issue with something that would seem to have an easy
solution, but which escapes me.  I have configuration files that I would
like to parse.  The data I am having issue with is a multi-line attribute
that has the following structure:

banner <option> <banner text delimiter>
Banner text
Banner text
Banner text
...
<banner text delimiter>

The regex 'banner\s+(\w+)\s+(.+)' captures the command nicely and
banner.group(2) captures the delimiter nicely.

My issue is that I need to capture the lines between the delimiters (both
delimiters are the same).

I really, really wouldn't do this with a single regexp. You'll get a much easier to understand program if you implement a small state machine instead. In rough pseudocode:

collecting_banner = False
for line in configuration_file:
    if not collecting_banner:
        if found banner start:
            get delimiter
            collecting_banner = True
            banner_lines = []
        elif found other stuff:
            do other stuff
    elif found delimiter:
        collecting_banner = False
    else:
        banner_lines.append(line)

--
Rhodri James *-* Wildebeest Herder to the Masses
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to