Python - 用逗号分割,跳过括号内的内容

Dav*_*vid 3 python regex replace

我需要用逗号分割字符串,但我对这种情况有一个问题:

TEXT EXAMPLE (THIS IS (A EXAMPLE, BUT NOT WORKS, FOR ME)), SECOND , THIRD
Run Code Online (Sandbox Code Playgroud)

我想拆分并得到:

var[0] = "TEXT EXAMPLE (THIS IS (A EXAMPLE, BUT NOT WORKS, FOR ME))"
var[1] = "SECOND"
var[2] = "THIRD"
Run Code Online (Sandbox Code Playgroud)

谢谢

anu*_*ava 5

您可以使用这个基于负向前瞻的正则表达式:

,(?!(?:[^(]*\([^)]*\))*[^()]*\))
Run Code Online (Sandbox Code Playgroud)

该正则表达式正在查找带有断言的逗号,以确保逗号不在括号中。这是通过使用负前瞻来完成的,该前瞻首先消耗所有匹配()然后消耗). 这假设括号是平衡的且未转义

正则表达式演示

代码:

>>> s = 'TEXT EXAMPLE (THIS IS (A EXAMPLE, BUT NOT WORKS, FOR ME)), SECOND , THIRD'
print re.split(r',(?!(?:[^(]*\([^)]*\))*[^()]*\))', s)

['TEXT EXAMPLE (THIS IS (A EXAMPLE, BUT NOT WORKS, FOR ME))', ' SECOND ', ' THIRD']
Run Code Online (Sandbox Code Playgroud)

或者:

>>> s = 'TEXT EXAMPLE (THIS, IS (A EXAMPLE, BUT NOT WORKS, FOR ME)), SECOND , THIRD'
>>> print re.split(r',(?!(?:[^(]*\([^)]*\))*[^()]*\))', s)
['TEXT EXAMPLE (THIS, IS (A EXAMPLE, BUT NOT WORKS, FOR ME))', ' SECOND ', ' THIRD']
Run Code Online (Sandbox Code Playgroud)