从"param1=1-param2=1.e-01-param3=A"
开始,如何获得
["param1=1", "param2=1.e-01", "param3=A"]
?问题是分隔符“-”可能包含在参数的值中。你知道吗
弗兰克
>>> import re
>>> re.split("-", "param1=1-param2=1.e-01-param3=A")
['param1=1', 'param2=1.e', '01', 'param3=A']
>>> re.split("[^e]-[^0]", "param1=1-param2=1.e-01-param3=A")
['param1=', 'aram2=1.e-0', 'aram3=A']
>>> re.split("[?^e]-[?^0]", "param1=1-param2=1.e-01-param3=A")
['param1=1-param2=1.', '1-param3=A']
编辑
好吧,我忘了提到param1,param2,param3实际上并不共享相同的"param"
字符串。如果我们必须把"p=1-q=1.e-01-r=A"
分成同一类的列表["p=1", "q=1.e-01", "r=A"]
呢?你知道吗
编辑
>>> re.split("(?:-)(?=[a-z]+)", "p=1-q=1.e-01-r=A")
['p=1', 'q=1.e-01', 'r=A']
做我的工作,因为我知道参数名不能携带任何-
。你知道吗
谢谢,伙计们!你知道吗
对于其他字符串
试试这个https://regex101.com/r/zwI2Mk/1和https://regex101.com/r/zwI2Mk/1/codegen?language=python
通过使用非捕获组和正向前瞻,仅当
'-'
后跟'param'
时捕获'-'
:Live demo on regex101
相关问题 更多 >
编程相关推荐