获取函数内所有调用函数

问题描述 投票:0回答:1

我正在尝试提取“(”后跟“)”之前的字符串。注意:大括号之间可能没有,也可能没有。

string = "int a = {0}; func1(arg1, arg11); if(var1 == data1 && func2(arg2)) {  var2 = func3(arg3, func4(arg4))  func5(var5) } else { (void)func6(arg6) }"

尝试过(在Python 3.12.3中):

  1. 使用重新模块

     re.findall(r'.*?(?=\s?\().*?(?=\))', string)
     re.findall(r'.*?(?=\s?\()', string)
    
  2. 使用正则表达式

      regex.search(r'.*?(\((.*?:[()]|[^()]|(?R))*+\))', string)
    

所需输出:

func1
if
func2
func3
func4
func5
func6

有没有办法递归调用正则表达式?

python python-3.x python-re
1个回答
0
投票
re.findall(r'\w+?(?=\s?\(.*?\))', string)

您需要在开头使用

\w+?
,以便匹配只是一个标记,而不是
(
之前的所有内容。

© www.soinside.com 2019 - 2024. All rights reserved.