繁体   English   中英

python不是在矩阵表达式内用逗号分割字符串

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM