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.
Author by
Patric
Please have a look at http://qoo.li I am a software engineer working in Switzerland.
Updated on July 27, 2022Comments
-
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 over 6 yearsShouldn't you escape inner ] ?