python正则问题

我想要匹配“(  ]“ 或者"[  )" 中的内容,这么写正则错在哪里了呢?

str = '[123)(abc]'
m = re.findall(r'\[(.*?)\)|\((.*?)]',str)

我想要得到[123,  abc]

但结果是

[('123', ''), ('', 'abc')]

 

str1 = '[123)(abc]'
m = re.findall(r'\[(.*?)\)\((.*?)]',str1)
m

str1 = '[123)(abc]'
m1 = re.findall(r'\[(.*?)\)',str1)
m2 = re.findall("\((.*?)\]",str1)
m1,m2

哪个是你想要的?

另外:

1、建议不要用str等关键字做变量名

2、我这是在jupyter 上测试的,你如果是编辑器。最后一行改为print