----- Original Message -----
> From: Steven D'Aprano <st...@pearwood.info> > To: python-list@python.org > Cc: > Sent: Friday, July 11, 2014 11:04 AM > Subject: Re: How to decipher :re.split(r"(\(\([^)]+\)\))" in the example > > On Thu, 10 Jul 2014 23:33:27 -0400, Roy Smith wrote: > >> In article <mailman.11747.1405046292.18130.python-l...@python.org>, >> Tim Chase <python.l...@tim.thechases.com> wrote: >> >>> On 2014-07-10 22:18, Roy Smith wrote: >>> > > Outside this are \( and \): these are literal opening > and closing >>> > > bracket characters. So: >>> > > >>> > > \(\([^)]+\)\) >>> > >>> > although, even better would be to use to utterly awesome >>> >> re.VERBOSE >>> > flag, and write it as: >>> > >>> > \({2} [^)]+ \){2} >>> >>> Or heck, use a multi-line verbose expression and comment it for >>> clarity: >>> >>> r = re.compile(r""" >>> ( # begin a capture group >>> \({2} # two literal "(" characters [^)]+ > # one or more >>> non-close-paren characters \){2} # two literal > ")" >>> characters >>> ) # close the capture group """, > re.VERBOSE) >>> >>> -tkc >> >> Ugh. That reminds me of the classic commenting anti-pattern: > > The sort of dead-simple commenting shown below is not just harmless but > can be *critically important* for beginners, who otherwise may not know > what "l = []" means. > >> l = [] # create an empty list >> for i in range(10): # iterate over the first 10 integers >> l.append(i) # append each one to the list > Anything better than this hideous type of commenting: (?#...), e.g >>> re.match("(19|20)[0-9]{2}(?#year)-[0-9]{2}(?#month)", "2010-12") Same thing for the 'limsux' modifiers, although *maybe* they can be useful. -- https://mail.python.org/mailman/listinfo/python-list