regular expression for getting content between parentheses

Rhodri James rhodri at
Thu May 7 20:19:21 EDT 2009

On Fri, 08 May 2009 00:51:14 +0100, Rajanikanth Jammalamadaka  
<rajanikanth at> wrote:

> Hi
> I have a text file as follows:
> testName = (
>  someParam = value1
>  anotherParam = (value2, value3)
> )
> how do I write a regular expression to get all the contents of the
> file which are between the first and last parentheses.

You don't, or at least you don't without some cast-iron guarantees
that your file will look *exactly* like this.  If you can guarantee
that, then this should work:

import re

f = open(filename)
data =
m = re.match(r"""[^(]*\(     # Find the first open parenthesis
                  (.*)        # Gobble up everything...
                  \)[^)]*$    # the last close paren""",
              data, re.X)
if m:

Notice that this will do *exactly* what you asked; pick up
everything between the first and the last parentheses.  In
particular, if your text looks like this:

testName1 = (
   someParam1 = value1
   anotherParam1 = (value2, value3)
testName2 = (
   sameParam2 = value4

...then what you'll get out is:

   someParam1 = value1
   anotherParam1 = (value2, value3)
testName2 = (
   sameParam2 = value4

You can't get around that with regular expressions, you'll
have to parse your way through the input string counting
open and close parentheses as you go.

Rhodri James *-* Wildebeeste Herder to the Masses

More information about the Python-list mailing list