[英]python split a string by comma not inside matrix expression
我想分割一个用逗号分隔的字符串,而不是在Matrix表达式内。 例如:
输入:
value = 'MA[1,2],MA[1,3],der(x),x,y'
预期输出:
['MA[1,2]','MA[1,3]','der(x)','x','y']
我尝试使用value.split(',')
,但是它在[]
内部拆分,我尝试使用一些正则表达式来捕获使用此正则表达式在[]
内部提取文本
import re
re.split(r'\[(.*?)\]', value)
我的正则表达不好,任何建议都会有所帮助
您可以使用负向后看
>>> import re
>>> value1 = 'MA[1,2],MA[1,3],der(x),x,y'
>>> value2 = 'M[a,b],x1,M[1,2],der(x),y1,y2,der(a,b)'
>>> pat = re.compile(r'(?<![[()][\d\w]),')
>>> pat.split(value1)
['MA[1,2]', 'MA[1,3]', 'der(x)', 'x', 'y']
>>> pat.split(value2)
['M[a,b]', 'x1', 'M[1,2]', 'der(x)', 'y1', 'y2', 'der(a,b)']
"(?<![[()][\\d\\w]),"g
(?<![[()][\\d\\w])
负向后看-断言不可能匹配下面的正则表达式
[[()]
匹配单个字符存在于下面的列表[()
列表中的单个字符[()
逐字地 [\\d\\w]
匹配下面列表中存在的单个字符\\d
匹配数字[0-9]
\\w
匹配任何单词字符[a-zA-Z0-9_]
,
匹配的字符,从字面上
g
修饰符:全局。 所有比赛(在第一个比赛中不返回)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.