Get the string within brackets in Python


I have a sample string <alpha.Customer[cus_Y4o9qMEZAugtnW] active_card=<alpha.AlphaObject[card] ...>, created=1324336085, description='Customer for My Test App', livemode=False>

I only want the value cus_Y4o9qMEZAugtnW and NOT card (which is inside another [])

How could I do it in easiest possible way in Python? Maybe by using RegEx (which I am not good at)?

This question is tagged with python regex brackets

~ Asked on 2011-12-20 00:00:04

The Best Answer is


How about:

import re

s = "alpha.Customer[cus_Y4o9qMEZAugtnW] ..."
m ="\[([A-Za-z0-9_]+)\]", s)

For me this prints:


Note that the call to finds the first match to the regular expression, so it doesn't find the [card] unless you repeat the search a second time.

Edit: The regular expression here is a python raw string literal, which basically means the backslashes are not treated as special characters and are passed through to the method unchanged. The parts of the regular expression are:

  1. \[ matches a literal [ character
  2. ( begins a new group
  3. [A-Za-z0-9_] is a character set matching any letter (capital or lower case), digit or underscore
  4. + matches the preceding element (the character set) one or more times.
  5. ) ends the group
  6. \] matches a literal ] character

Edit: As D K has pointed out, the regular expression could be simplified to:

m ="\[(\w+)\]", s)

since the \w is a special sequence which means the same thing as [a-zA-Z0-9_] depending on the re.LOCALE and re.UNICODE settings.

~ Answered on 2011-12-20 00:07:21


This should do the job:

re.match(r"[^[]*\[([^]]*)\]", yourstring).groups()[0]

~ Answered on 2011-12-20 00:09:13

Most Viewed Questions: