'2019-12-04 10:16:57+0100' AND car.Audi > 5) AND (time.ti-6ren">
gpt4 book ai didi

python - 将带括号的内容过滤到 Python 列表中

转载 作者:行者123 更新时间:2023-12-01 11:52:26 26 4
gpt4 key购买 nike

我试图用正则表达式过滤圆括号内的内容。

s = "(time.timestamp > '2019-12-04 10:16:57+0100' AND car.Audi > 5) AND (time.timestamp > '2019-12-04 10:16:57+0100' AND car.VW > 5) OR (time.timestamp > '2019-12-04 10:16:57+0100' AND car.BMW > 5)" 

我想要作为返回的是这些内容和 AND 的列表

list = [
"(time.timestamp > '2019-12-04 10:16:57+0100' AND car.Audi > 5)",
"AND",
"(time.timestamp > '2019-12-04 10:16:57+0100' AND car.VW > 5)",
"OR",
"(time.timestamp > '2019-12-04 10:16:57+0100' AND car.BMW > 5)"
]

我尝试了 re.split(r'\)\s*(AND|OR)\s*\(', s) 但一些括号被删除了。

[
"(events.timestamp > '2019-12-04 10:16:57+0100' AND event_type.engine_error > 5",
'AND',
"events.timestamp > '2019-12-04 10:16:57+0100' AND event_type.turtle_lamp > 5)",
...
]

你知道我怎样才能最好地解决它吗?

也不一定要用正则表达式来解决。

最佳答案

括号被删除,因为它们是消耗 模式的一部分。使用 re.split 删除所有未捕获的消耗字符.

用环视将括号括起来,在开始时向后看,在结束时向前看:

re.split(r'(?<=\))\s*(AND|OR)\s*(?=\()', s)
^^^^^^^ ^^^^^^

现在,(?<=\))匹配紧接在 ) 之前的位置(?=\()匹配紧跟 ( 的位置.

关于python - 将带括号的内容过滤到 Python 列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59301224/

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