你好,我想使用Regex提取python中的函数名,但是我是Python的新手,对我来说似乎没有任何作用。例如:如果我有一个字符串“ def myFunction(s):....”,我只想返回myFunction
['Asd', ['Asd']]
答案 0 :(得分:0)
如果您想要的只是我建议使用inspect的函数的名称。这对我有用:
totalCost = items.reduce((result, item) => result + item.cost, 0);
答案 1 :(得分:0)
假设:您要从“ ... def myFunction(s):...”中命名myFunction
我发现您的正则表达式及其结构方式中缺少一些东西。
\s*(def)\s+\([^\)]*\)\s*{?\s*
让我们逐步了解它:
\s*
:匹配零个或多个空格。(def)
:与单词def匹配。\s+
:匹配一个或多个空格。\([^\)]*\)
:匹配为平衡()\s*
:匹配零个或多个空格。
之后,您只需要函数的名称就几乎无关紧要。 您没有在正则表达式中匹配所需的确切内容。如果您对正则表达式感兴趣,可以尝试此正则表达式:
\s*(def)\s([a-zA-Z]*)\([a-zA-z]*\)
现在,按照我构造正则表达式的方式,您将在组0中获得def myFunction(s)
,在组1中获得def
,在组2中获得myFunction
。因此,您可以使用以下代码获取结果:
import re
def extractName(s):
string = ""
regexp = re.compile(r"(def)\s([a-zA-Z]*)\([a-zA-z]*\)")
for m in regexp.finditer(s):
string += m.group(2)
return string
您可以通过进行此site来实时检查正则表达式。
希望有帮助!