Python 有没有一种方法可以在一个单词和一个字符之间提取所有字符串?

Python 有没有一种方法可以在一个单词和一个字符之间提取所有字符串?,python,regex,Python,Regex,我试图使用正则表达式从一个长字符串中提取所有函数声明。现在,我正在尝试使用模式function\\|(.*?\\\\}来提取所有字符串,其中第一个单词是function,最后一个字符是},后面是一个空行。我不太熟悉正则表达式,所以我不确定我做错了什么,但我没有得到任何匹配 是否有更好/更容易的模式用于此 我当前的尝试/实施: import re def pull_functions(source_code): pattern = "function\|(.*?)\|\}&qu

我试图使用正则表达式从一个长字符串中提取所有函数声明。现在,我正在尝试使用模式
function\\|(.*?\\\\}
来提取所有字符串,其中第一个单词是
function
,最后一个字符是
}
,后面是一个空行。我不太熟悉正则表达式,所以我不确定我做错了什么,但我没有得到任何匹配

是否有更好/更容易的模式用于此

我当前的尝试/实施:

import re

def pull_functions(source_code):
    pattern = "function\|(.*?)\|\}"

    # substring = re.search(pattern, source_code).group(1)
    # print(substring)
    matches = re.findall(
        pattern=r'function\|(.*?)\|\}',
        string=source_code
    )

    print(matches)

    return
以下是
源代码
的示例:

function foo()
        public
        returns (bool)
{
        ... Function Contents ...
}

/**
 * Some information about this functions...      
 */
function bar(type v1, type v2)
    public
    returns (bool)
{
    ... Function Contents ...
}

以下正则表达式是否符合您的要求

(^\s*function\s+(.*\s)+?\})
然后捕获Group1。在case-inside方法中,只有当{….}它能够处理这个问题时才有


您是否试图提取整个函数的源代码?如果是这样的话,那么regex就不是合适的工具。例如,如果任何函数中有一个
if{…}
,您的模式将过早停止。@TimBiegeleisen是的,我正在尝试获取所有函数的源代码…我是否需要循环文件?老实说,您需要在这里编写某种解析器。一种简单的方法是使用正则表达式来查找
\b函数\w+\(.*?\)\{
。然后,从这一点开始,使用堆栈来跟踪
{
}
。当您找到
}
时,函数就结束了,这样堆栈中就没有网架了。@Kmandai这几乎可以工作了,但我需要每个函数都是单独的匹配项。目前,我正在考虑是否可以以某种方式添加一个换行符要求……以便“function”一词的出现启动一个新的组。见本期: