gpt4 book ai didi

python - 获取全括号表达式的所有部分

转载 作者:太空宇宙 更新时间:2023-11-03 21:06:08 25 4
gpt4 key购买 nike

我需要一个正则表达式,它返回带括号的字符串的所有部分。

一个例子是:

if ((a and b) or (a and)) or (c and d) or (e and f)

会返回

['if', '((a and b) or (a and))', 'or', '(c and d)', 'or', '(e and f)']

.

有人可以指导我如何实现它吗?不幸的是我和re没有很深厚的友谊。

最大的问题是“括号内的括号”。

非常感谢。

最佳答案

正则表达式无法进行深括号匹配。

如果你有一个固定的模式,比如三个括号深,第二组同级位于顶层括号,等等,你就可以做到这一点。但是,仅使用正则表达式将任意右括号与左括号匹配并不容易(如果有一种实用的方法可以使用正则表达式来实现)。

编写几行 Python 代码并使用 Python 本身来匹配外部括号组要容易得多 - 因为您只需计算流中左括号的数量即可。所以,沿着这个 - (它可以用更少的行来完成):

def extract_parentheses_groups(text):
count = 0
groups = []
buffer = ""
for char in text:
if char == "(":
if count == 0 and buffer.strip():
groups.append(buffer.strip())
buffer = ""
count += 1
buffer += char
if char == ")":
count -= 1
if count == 0:
groups.append(buffer.strip())
buffer = ""
if buffer.strip():
groups.append(buffer.strip())
return groups

通过此运行您的示例输入,我得到:

In [17]: a = """if ((a and b) or (a and)) or (c and d) or (e and f)"""

In [18]: extract_parentheses_groups(a)
Out[18]: ['if', '((a and b) or (a and))', 'or', '(c and d)', 'or', '(e and f)']

关于python - 获取全括号表达式的所有部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55383691/

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