我有像
这样的字符串a = 'text1, text2 (subtext1, subtext2), text3'
需要用逗号分隔分割部分字符串,但只包括那些不在框括号中的字符串:
splited = ['text1', 'text2 (subtext1, subtext2)', 'text3']
如何使用正则表达式?
答案 0 :(得分:2)
使用基于正则表达式的否定先行断言。
>>> a = 'text1, text2 (subtext1, subtext2), text3'
>>> re.split(r',(?![^()]*\))', a)
['text1', ' text2 (subtext1, subtext2)', ' text3']
>>> re.split(r',\s*(?![^()]*\))', a)
['text1', 'text2 (subtext1, subtext2)', 'text3']
或强>
基于前瞻性的正面表达式。
>>> re.split(r',\s*(?=[^()]*(?:\(|$))', a)
['text1', 'text2 (subtext1, subtext2)', 'text3']