如何提取函数名称python正则表达式

时间:2019-02-27 12:33:12

标签: python regex

你好,我想使用Regex提取python中的函数名,但是我是Python的新手,对我来说似乎没有任何作用。例如:如果我有一个字符串“ def myFunction(s):....”,我只想返回myFunction

['Asd', ['Asd']]

2 个答案:

答案 0 :(得分:0)

如果您想要的只是我建议使用inspect的函数的名称。这对我有用:

totalCost = items.reduce((result, item) => result + item.cost, 0);

答案 1 :(得分:0)

假设:您要从“ ... def myFunction(s):...”中命名myFunction

我发现您的正则表达式及其结构方式中缺少一些东西。

\s*(def)\s+\([^\)]*\)\s*{?\s*

让我们逐步了解它:

  1. \s*:匹配零个或多个空格。
  2. (def):与单词def匹配。
  3. \s+:匹配一个或多个空格。
  4. \([^\)]*\):匹配为平衡()
  5. \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来实时检查正则表达式。

希望有帮助!