Fabian Holler wrote: > Yes thats right, but that isn't my problem. > The problem is in the "(?=(iface)|$)" part.
no, the problem is that you're thinking "procedural string matching from left to right", but that's not how regular expressions work. > I have i.e. the text: > > "auto lo eth0 > <MATCH START>iface lo inet loopback > bla > blub > > <MATCH END>iface eth0 inet dhcp > hostname debian" > > > My regex should match the marked text. > But it matchs the whole text starting from iface. which is perfectly valid, since a plain "+" is greedy, and you've asked for "iface lo" followed by some text followed by *either* end of string or another "iface". the rest of the string is a perfectly valid string. if you want a non-greedy match, use "+?" instead. however, if you just want the text between two string literals, it's often more efficient to just split the string twice: text = text.split("iface lo", 1)[1].split("iface", 1)[0] </F> -- http://mail.python.org/mailman/listinfo/python-list