使用python正则表达式提取用方括号分隔的项目

我正在尝试使用
python正则表达式拆分由方括号分隔的单词/短语.我想拆分输出.条件是以方括号开头和结尾的文本部分将被拆分为不同的元素.

这是我到目前为止,但它无法正常工作:

import re
t="word1 word2 3456 [abc def] [ghi jkl] [1234] [-abcd] word 2345"
re.split("(\[)(.*)(\])+",t)

输出:

['word1 word2 3456 ',
'[',
'abc def] [ghi jkl] [1234] [-abcd',
']',
' word [xyz 2345']

我希望输出类似于:

['word1 word2 3456 ',
 '[abc def]',
 ' ',
 '[ghi jkl]',
 ' ',
 '[1234]',
 ' ',
 '[-abcd]',
 ' word [xyz 2345']

请注意,只有具有左右方括号的项目才会被拆分.

我也试过这个:

re.split("(\[.*\])+",t)

但是只能按第一个和最后一个方括号分开

['word1 word2 3456 ', '[abc def] [ghi jkl] [1234] [-abcd]', ' word [xyz 2345']

最佳答案 使用 . ?代替 .*:

>>> re.split("(\[.+?\])", t)
['word1 word2 3456 ', '[abc def]', ' ', '[ghi jkl]', ' ', '[1234]', ' ', '[-abcd]', ' word 2345']
点赞