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)
谢谢
您可以使用这个基于负向前瞻的正则表达式:
,(?!(?:[^(]*\([^)]*\))*[^()]*\))
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)