Python:如何在方括号内获取多个元素

时间:2012-02-22 21:25:10

标签: python regex pattern-matching match python-2.7

我有一个像这样的字符串/模式:

[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 个答案:

答案 0 :(得分:17)

re.findall是你的朋友:

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

答案 1 :(得分:5)

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

答案 2 :(得分:3)

我怀疑你正在寻找re.findall

请参阅this demo

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

如果要迭代匹配而不是匹配字符串,可以改为查看re.finditer。有关详细信息,请参阅Python re docs