gpt4 book ai didi

javascript - 使用正则表达式获取函数内容

转载 作者:行者123 更新时间:2023-11-28 15:23:49 30 4
gpt4 key购买 nike

我正在尝试使用正则表达式从输入字符串中获取函数。

到目前为止,我成功获得了JavaScript kind of function declarations使用以下正则表达式:

/(\b(f|F)unction(.*?)\((.*?)\)\s*\{)/g

像这样应用时,将返回第一个索引上的整个声明:

var re = /(\b(f|F)unction(.*?)\((.*?)\)\s*\{)/g;

while ((m = re.exec(text)) !== null) {
//m[0] contains the function declaration
declarations.push(m[0]);
}

现在,我想获取返回的匹配项,即每个函数的全部内容,以便稍后可以使用它(删除它,包装它......)

我还没有找到一个正则表达式来做到这一点,到目前为止,我得到了这个:

(\b(f|F)unction(.*?)\((.*?)\)\s*\{)(.*?|\n)*\}

但是,当然,它捕获第一个右括号 },而不是每个函数末尾的右括号。

知道如何获取每个函数的结束 } 吗?

最佳答案

Any idea of how to get the closing } of each function?

使用正则表达式这将非常困难。因为函数体可以包含任意数量的可能嵌套的大括号对。然后考虑函数体中包含不匹配大括号的字符串。

解析非 regular language您需要比正则表达式更强大的东西:该语言的解析器。

(某些正则表达式变体具有匹配配对字符的能力,但首先 JavaScript 的正则表达式引擎不是这样;其次还有这些字符串......)

关于javascript - 使用正则表达式获取函数内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30056228/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com