gpt4 book ai didi

Python - 如何使用正则表达式拆分字符串但保留包含拆分分隔符的模式?

转载 作者:太空宇宙 更新时间:2023-11-04 02:45:40 27 4
gpt4 key购买 nike

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

据我所知,参数名称不能携带任何 -

谢谢大家!

最佳答案

通过使用非捕获组和积极的前瞻,仅当 '-' 后跟 'param' 时才捕获它:

import re

string = "param1=1-param2=1.e-01-param3=A"
print(re.split(r"(?:-)(?=param)", string))
# ['param1=1', 'param2=1.e-01', 'param3=A']

Live demo on regex101

关于Python - 如何使用正则表达式拆分字符串但保留包含拆分分隔符的模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45212378/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com