gpt4 book ai didi

Python 正则表达式先行多个条件

转载 作者:行者123 更新时间:2023-11-28 22:43:19 24 4
gpt4 key购买 nike

我的字符串看起来像这样:

string = "*[EQ](@[Type],'A,B,C',@[Type],*[EQ](@[Type],D,E,F))"

理想的输出列表是:

['@[Type]', 'A,B,C', '@[Type]', '*[EQ](@[Type],D,E,F)']

所以我可以将字符串解析为:

if @[Type] in ('A,B,C') then @[Type] else *[EQ](@[Type],D,E,F)

挑战是找到所有后跟 @、' 或 * 的逗号。我已经尝试了以下代码,但它不起作用:

interM = re.search(r"\*\[EQ\]\((.+)(?=,@|,\*|,\')+,(.+)\)", string)
print(interM.groups())

编辑:

最终目标是解析出输入字符串的 4 个组成部分:

*[EQ](Value, Target, ifTrue, ifFalse)

最佳答案

>>> import re
>>> string = "*[EQ](@[Type],'A,B,C',@[Type],*[EQ](@[Type],D,E,F))"
>>> re.split(r"^\*\[EQ\]\(|\)$|,(?=[@'*])", string)[1:-1]
['@[Type]', "'A,B,C'", '@[Type]', '*[EQ](@[Type],D,E,F)']

不过,如果您正在寻找更强大的解决方案,我强烈推荐 Lexical Analyzer例如flex .

关于Python 正则表达式先行多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30929991/

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