我想要匹配"[ )"或者 "( ]"中的内容,于是我写了这样一个正则:`str = '[123)(abc]'m = re.findall('[(.?))|((.?)]',str)`
我想要得到[’123‘ , ’abc‘]这样一个数组结果但结果是[('123', ' '), (' ', 'abc')]我应该如何修改?
像这种需要匹配前后有特定字符的内容,用 零宽断言 比较合适。
findall
正解如下
str = '[123)(abc]' parttern = '(?<=[).*(?=))|(?<=().*(?=])' # 分别使用正后发与正先行断言 m = re.findall(parttern, str) print(m) # ['123', 'abc']
1.4m articles
1.4m replys
5 comments
57.0k users