使用python正则表达式解析函数调用

2024-09-30 12:15:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试分析函数调用:

foo(arg1, arg2 ...)

匹配fooarg1arg2。但是我遇到的问题是,arg1可能是bar(x1, x2)里面有逗号

当我使用this toolwith ([\w]+)\((.*?)\)$作为我的正则表达式,foo(bar(2,'a'), bas())作为我的测试用例时,我能够捕获foo和整行参数bar(2,'a'), bas(),但我不确定如何分别捕获参数

我想捕捉:

  • foo
  • bar(2,'a')
  • bas()

如何修改python正则表达式以分别捕获这些参数?


Tags: 参数foobar测试用例this逗号x1x2
1条回答
网友
1楼 · 发布于 2024-09-30 12:15:35

试试这个正则表达式:([\w]+)\((.*?), (.*?)\)$。它适用于两个论点。参见测试here

  • (.*?)-查找尽可能短的参数
  • , -, (分隔参数)
  • (.*?)-查找第二个参数

如果希望它具有1+个参数的动态,可以使用以下正则表达式:([\w]+)\((.*?)(?:, (.*?))*\)$。参见测试here

  • (.*?)-查找第一个可能的最短参数
  • (?:, (.*?))*-查找下一个0-n个, (.*?)
    • , -逐字匹配, ,但不捕获
    • (.*?)-匹配另一个参数

相关问题 更多 >

    热门问题