正则表达式在逗号后匹配单词和括号

时间:2020-10-27 10:07:16

标签: python regex split regex-group

我有一个像这样的字符串:

aaaa (aa), bbbb, b2b2b2 (bbbb), ccc, c33 (ccc), ddd, d222, d33 (ddd)

我想将其拆分为逗号后加括号的每个组:

aaaa (aa)
bbbb, b2b2b2 (bbbb)
ccc, c33 (ccc)
ddd, d222, d33 (ddd)

我尝试了多个正则表达式,甚至是Parse library,但都没有成功

任何想法都会受到欢迎!

提前谢谢!

2 个答案:

答案 0 :(得分:2)

使用向后看

例如:

import re

s = "aaaa (aa), bbbb, b2b2b2 (bbbb), ccc, c33 (ccc), ddd, d222, d33 (ddd)"
print(re.split(r"(?<=\)),", s))

输出:

['aaaa (aa)', ' bbbb, b2b2b2 (bbbb)', ' ccc, c33 (ccc)', ' ddd, d222, d33 (ddd)']

答案 1 :(得分:0)

我不怎么用正则表达式来做到这一点,但这里有一个非常简单的衬里:

string = '''aaaa (aa), bbbb, b2b2b2 (bbbb), ccc, c33 (ccc), ddd, d222, d33 (ddd)'''
[i.strip().strip()+")"  if ")" not in i else i.strip() for i in string.split("),")]

给出:

['aaaa (aa)', 'bbbb, b2b2b2 (bbbb)', 'ccc, c33 (ccc)', 'ddd, d222, d33 (ddd)']