Python - 通过逗号跳过括号内的内容进行拆分 [英] Python - Split by comma skipping the content inside parentheses

查看:47
本文介绍了Python - 通过逗号跳过括号内的内容进行拆分的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

文本示例(这是(一个示例,但对我来说不起作用)),第二个,第三个

我想拆分并得到:

var[0] = "文本示例(这是(一个示例,但对我来说不起作用))"var[1] = "第二个"var[2] = "第三"

谢谢

解决方案

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

,(?!(?:[^(]*\([^)]*\))*[^()]*\))

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

正则表达式演示

代码:

<预><代码>>>>s = '文本示例(这是(一个示例,但对我来说不起作用)),第二个,第三个'打印 re.split(r',(?!(?:[^(]*\([^)]*\))*[^()]*\))', s)['文本示例(这是(一个示例,但不适用于我))'、'第二个'、'第三个']

或者:

<预><代码>>>>s = '文本示例(这个,是(一个示例,但对我来说不起作用)),第二个,第三个'>>>打印 re.split(r',(?!(?:[^(]*\([^)]*\))*[^()]*\))', s)['文本示例(这个,是(一个示例,但对我来说不起作用))','第二个','第三个']

I need to split a string by commas, but I have a problem with this case:

TEXT EXAMPLE (THIS IS (A EXAMPLE, BUT NOT WORKS, FOR ME)), SECOND , THIRD

I would like to split and get:

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

Thank you

解决方案

You can use this negative lookahead based regex:

,(?!(?:[^(]*\([^)]*\))*[^()]*\))

This regex is finding a comma with an assertion that makes sure comma is not in parentheses. This is done using a negative lookahead that first consumes all matching ( and ) and then a ). This assumes parentheses are balanced and unescaped.

RegEx Demo

Code:

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

Or:

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

这篇关于Python - 通过逗号跳过括号内的内容进行拆分的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆