Python: How to get multiple elements inside square brackets

11,776

Solution 1

re.findall is your friend here:

>>> import re
>>> sample = "[xy][abc]"
>>> re.findall(r'\[([^]]*)\]',sample)
['xy', 'abc']

Solution 2

>>> import re
>>> re.findall("\[(.*?)\]", "[xy][abc]")
['xy', 'abc']

Solution 3

I suspect you're looking for re.findall.

See this demo:

import re
my_regex = re.compile(r'\[([^][]+)\]')
print(my_regex.findall('[xy][abc]'))
['xy', 'abc']

If you want to iterate over matches instead of match strings, you might look at re.finditer instead. For more details, see the Python re docs.

Share:
11,776
Patric
Author by

Patric

Please have a look at http://qoo.li I am a software engineer working in Switzerland.

Updated on July 27, 2022

Comments

  • Patric
    Patric almost 2 years

    I have a string/pattern like this:

    [xy][abc]
    

    I try to get the values contained inside the square brackets:

    • xy
    • abc

    There are never brackets inside brackets. Invalid: [[abc][def]]

    So far I've got this:

    import re
    pattern = "[xy][abc]"
    x = re.compile("\[(.*?)\]")
    m = outer.search(pattern)
    inner_value = m.group(1)
    print inner_value
    

    But this gives me only the inner value of the first square brackets.

    Any ideas? I don't want to use string split functions, I'm sure it's possible somehow with RegEx alone.

  • Gangnus
    Gangnus over 6 years
    Shouldn't you escape inner ] ?