Python: как получить несколько элементов в квадратных скобках
у меня есть строка / шаблон, как это:
[xy][abc]
Я пытаюсь получить значения, содержащиеся в квадратных скобках:
- xy
- abc
нет скобок внутри скобок. Неверный:[[abc][def]]
пока у меня есть это:
import re
pattern = "[xy][abc]"
x = re.compile("[(.*?)]")
m = outer.search(pattern)
inner_value = m.group(1)
print inner_value
но это дает мне только внутреннее значение первых квадратных скобок.
какие идеи? Я не хочу использовать функции разделения строк, я уверен, что это возможно как-то с RegEx самостоятельно.
3 ответов
re.findall
ваш друг здесь:
>>> import re
>>> sample = "[xy][abc]"
>>> re.findall(r'\[([^]]*)\]',sample)
['xy', 'abc']
Я подозреваю, что вы ищете re.findall
.
посмотреть демо:
import re
my_regex = re.compile(r'\[([^][]+)\]')
print(my_regex.findall('[xy][abc]'))
['xy', 'abc']
если вы хотите перебирать совпадения вместо строк соответствия, вы можете посмотреть re.finditer
. Дополнительные сведения см. В разделе Python re
docs.