Regexp拆分字符串以及其他条件

时间:2015-05-17 09:10:39

标签: python regex split conditional-statements

我有像

这样的字符串
a = 'text1, text2 (subtext1, subtext2), text3'

需要用逗号分隔分割部分字符串,但只包括那些不在框括号中的字符串:

splited = ['text1', 'text2 (subtext1, subtext2)', 'text3']

如何使用正则表达式?

1 个答案:

答案 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']

DEMO

基于前瞻性的正面表达式。

>>> re.split(r',\s*(?=[^()]*(?:\(|$))', a)
['text1', 'text2 (subtext1, subtext2)', 'text3']