Во-первых, избегайте использования str
в качестве имени переменной. str
уже имеет значение в Python, и, определив его как нечто другое, вы будете путать людей.
Сказав, что вы можете использовать следующее регулярное выражение:
>>> import re
>>> print re.findall(r'\[([^]]*)\]', s)
['Service Current', 'Service', '9991', '1.22']
Это работает следующим образом:
\[ match a literal [
( start a capturing group
[^]] match anything except a closing ]
* zero or more of the previous
) close the capturing group
\] match a literal ]
Альтернативное регулярное выражение:
r'\[(.*?)\]'
Это работает с использованием не жадного совпадения вместо сопоставления чего-либо, кроме ]
.