How to write Regular Expression for recursive matching?

Diez B. Roggisch deets at nospam.web.de
Mon Nov 26 12:04:54 EST 2007


lisong wrote:

> Hi All,
> 
> I have problem to split a string like this:
> 
> 'abc.defg.hij.klmnop'
> 
> and I want to get all substrings with only one '.' in mid. so the
> output I expect is :
> 
> 'abc.defg', 'defg.hij', 'hij.klmnop'
> 
> a simple regular expression '\w+.\w' will only return:
> 'abc.defg', 'hij.klmnop'
> 
> is there a way to get 'defg.hij' using regular expression?

Nope. Regular expressions can't get back in their input-stream, at least not
for such stuff.

The problem at hand is easily solved using

s = 'abc.defg.hij.klmnop'

pairs = [".".join(v) for v in zip(s.split(".")[:-1], s.split(".")[1:])]

Diez



More information about the Python-list mailing list