gpt4 book ai didi

Python 条件正则表达式

转载 作者:行者123 更新时间:2023-11-28 18:57:40 24 4
gpt4 key购买 nike

我的程序有一个带参数的对象,我需要获取参数的值。

我的程序给出的对象将如下所示:

Object = """{{objectName|
parameter1=random text|
parameter2=that may or may not|
parameter3=contain any letter (well, almost)|
parameter4=this is some [[problem|problematic text]], Houston, we have a problem!|
otherParameters=(order of parameters is random, but their name is fixed)}}"""

(所有参数可能存在也可能不存在)

我正在尝试获取属性值。

在前 3 行中,它非常简单。一个简单的正则表达式就能找到它:

if "parameter1" in Object:
parameter1 = re.split(r"parameter1=(.*?)[\|\}]", Object)[1]

if "parameter2" in Object:
parameter2 = re.split(r"parameter2=(.*?)[\|\}]", Object)[1]

等等。

问题出在参数 4 上,上面的正则表达式 (property4=(.*?)[\|\}]) 只会返回 this is some [[problem ,因为正则表达式停在竖线处。

事情是这样的:竖线只会作为“[[]]”内文本的一部分出现。

例如,parameter1=a[[b|c]]d 可能会出现,但 parameter1=a|bc| 永远不会出现。

我需要一个将在竖线处停止的正则表达式,除非它在双方括号内。因此,例如,对于参数 4,我将得到 this is some [[problem|problematic text]], Houston, we have a problem!

最佳答案

当我删除“?”时在这里工作:

parameter4 = re.split(r"parameter4=(.*)[\|\}]", object_)[1]

我还把变量的名字改成了“object_”,因为“object”是Python中的内置对象

最好的。

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

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