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

标签 python regex

我正在尝试使用 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']

关于python - 使用 python 正则表达式提取以方括号分隔的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25649224/

相关文章:

python - 找不到代码中的语法错误?

regex - Perl 正则表达式 : Negative lookaheads

regex - 如何只分组单词,没有空格?

PHP 正则表达式捕获第一个模式及其后的所有内容,即使它重复。

python - pywinpty 的构建轮 (pyproject.toml) ...安装 jupyter 笔记本时出错?

从父目录导入 Python

python - JIRA 标识符的正则表达式

python - 此文本在 python 中的正则表达式是什么

python - 在python中的两个键上合并两个数据框

python - 如何使用selenium将值输入到文本框中?