首页 新闻 会员 周边

【python】通过正则表达式获取括号中内容的问题

0
悬赏园豆:10 [已解决问题] 解决于 2018-10-20 14:49

有下面一个字符串,想通过正则表达式把最外层括号中的内容都取出来

str = '[A {B [C] | D [E] } ] F [ G ]'

match = re.findall('\[.*?\]', str)
print(match)

re.findall('\[.*?\]', str)的写法是把从第一个括号“[”到第一个反括号“]”的内容给取出来,所以造成了下面的输出结果
['[A {B [C]', '[E]', '[ G ]']

但是想要的输出结果是获取最外层的括号中的内容
['[A {B [C] | D [E] } ]', '[ G ]']

另外括号的类型是不一定的,有可能是大括号{},也有可能是中括号[],请问有大括号和中括号都适用的正则表达式吗?

芽衣的主页 芽衣 | 菜鸟二级 | 园豆:384
提问于:2018-10-11 09:08
< >
分享
最佳答案
0
[\[\{\]\}]
收获园豆:10
慧☆星 | 大侠五级 |园豆:5640 | 2018-10-11 09:13

你好!是改为match = re.findall('[[{]}]', str)的意思吗?
输出结果是['[', '{', '[', ']', '[', ']', '}', ']', '[', ']']
还是说我理解得不对……?

芽衣 | 园豆:384 (菜鸟二级) | 2018-10-11 09:22

@芽衣: 改为

match = /[\[\{\]\}]/.exec( str)
慧☆星 | 园豆:5640 (大侠五级) | 2018-10-11 09:42

@慧☆星: 谢谢你的回复。
好像语法有误
match = /[[{]}]/.exec(str)
^
SyntaxError: invalid syntax

芽衣 | 园豆:384 (菜鸟二级) | 2018-10-11 09:54

@慧☆星:
不好意思,不知道为什么直接粘贴报错结果显示出来会变成其他的格式,用插入代码的方式显示比较正确。

    match = /[\[\{\]\}]/.exec( str)
            ^
SyntaxError: invalid syntax
芽衣 | 园豆:384 (菜鸟二级) | 2018-10-18 09:14

@芽衣: 我用的是markdown语法里面的代码块

慧☆星 | 园豆:5640 (大侠五级) | 2018-10-19 14:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册