You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现按逗号分割函数参数 忽略任意层级嵌套括号内逗号

支持任意层级括号嵌套的逗号分割参数实现问题

我正在开发支持字符串内函数调用的解析器,目前已实现的逻辑通过正则匹配{function_name(whatever input)}格式语法,支持多层嵌套解析,会递归向下处理直到括号内的参数内容(即解析输入)不再包含嵌套函数为止。

例如对于字符串{function(arg, arg2, arg3)},我已可成功提取括号内的参数内容arg, arg2, arg3,此前直接使用.split(',')即可完成参数拆分;当嵌套函数无多参数时(如arg, nested(arg2), arg3),该方法也可正常运行。

但当嵌套函数自身包含逗号分隔的多参数时(如arg, nested(arg2, another), arg3),简单逗号分割会直接失效。我曾尝试用正则识别引号内的逗号,但非贪婪匹配无法覆盖所有场景,贪婪匹配又会干扰其他嵌套函数的识别。

arg, nested(arg2, another), arg3, call(this)
           ^->                           <-^

已尝试的方案

  • 搜索到的各类正则方案要么无法在Python中运行,要么依赖Python内置re库不支持的特性。注:递归匹配特性在第三方regex库中提供支持,使用该第三方库的方案也可接受。
  • 尝试过先将括号内的逗号替换为占位符再分割的思路,但面对未知层级的嵌套括号时该方案同样存在问题;还尝试使用\(([^()]|(?R))*\)正则整体匹配移除嵌套函数调用,但运行结果不符合预期,不确定是否为正则引擎差异导致——在正则测试站点验证时该正则可正确匹配含嵌套层级的括号内容。

核心需求

按逗号分割字符串,括号内的逗号不参与分割,括号支持任意未知层级的嵌套,非正则实现方案也可接受。

预期输出示例

# 输入字符串
"arg, nested(arg2, another), arg3, call(this)"
# 期望分割结果
['arg', 'nested(arg2, another)', 'arg3', 'call(this)']

环境要求

当前在Windows环境使用Python 3.9.1开发测试,方案需同时兼容Ubuntu服务器运行环境。

内容的提问来源于stack exchange,提问作者Ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 17:54:30