javascript - 正则表达式从函数组中获取单个函数体
问题描述
我有一个包含一组file.js
函数的 javascript 文件 []。代码看起来像这样:
/**
* Description 1
* @param arg_1 {String}
* @marked
* @return {String}
*/
function func_1(arg_1)
{
var test_var = arg_1.replace(/(?=[\\^$*+?.\(\)|{\}[\]])/g, "\\");
return test_var;
}
/**
* Description 2
* @param arg_1 {String}
* @notmarked
* @return {String}
*/
function func_2(arg_1)
{
var test_var = arg_1.replace(/(?=[\\^$*+?.\(\)|{\}[\]])/g, "\\");
return test_var;
}
/**
* Description 3
* @param arg_1 {String}
* @marked
* @return {String}
*/
function func_3(arg_1)
{
var test_var = arg_1.replace(/(?=[\\^$*+?.\(\)|{\}[\]])/g, "\\");
return test_var;
}
注意 JSDoc 标记@marked
和@notmarked
.
我需要完成的任务是为每个有@marked
标签的函数添加注释。
所以一个代码块是这样的:
/**
* Description 1
* @param arg_1 {String}
* @marked
* @return {String}
*/
function func_1(arg_1)
{
var test_var = arg_1.replace(/(?=[\\^$*+?.\(\)|{\}[\]])/g, "\\");
return test_var;
}
变成这样:
/**
* Description 1
* @param arg_1 {String}
* @marked
* @return {String}
*/
//start
function func_1(arg_1)
{
var test_var = arg_1.replace(/(?=[\\^$*+?.\(\)|{\}[\]])/g, "\\");
return test_var;
}
//end
主要的绊脚石是想出一个合适的正则表达式 [正则表达式] 来正确隔离函数,以便我可以进行正则表达式替换。
我试过这个正则表达式:
@marked[^\^]*?\*\/[^\^]*?(function[^\^]*?\{[\S\s]+?\})
这使两个函数匹配,但它没有关闭完整的函数体,因为函数体本身有右括号(})。并更改[\S\s]+?
为[\S\s]+
将所有内容都拉入最后一个函数的右括号。
这个正则表达式是可修复的,还是有更好的方法来完成任务?
编辑
@rv7的回答解决了这个问题。但是,根据您的功能设置方式,您可能会遇到更多问题。
例如,如果您有这样的功能块:
/**
* Description 1
* @param arg_1 {String}
* @marked
* @return {String}
*/
function func_1(arg_1)
{
var test_var = arg_1.replace(/(?=[\\^$*+?.\(\)|{\}[\]])/g, "\\");
var close_b = '}';
var sub_func = function(){
};
return test_var;
}
答案中的正则表达式将不起作用。但是,以下正则表达式将:
@marked[^\^]*?\*\/[^\^]*?(function[^\^]*?\{[\S\s]+?[^\\\']\} *(?!;))
因此,最好根据您的设置进行调整。总而言之,您应该选择独立式闭合支架,因为这对于大多数功能块来说应该是确定的。
解决方案
推荐阅读
- macos - NSTableView 使用自动布局在单元格视图上创建宽度约束
- anaconda - Jupyter Notebook 语法高亮不工作
- kotlin - 我无法理解 Kotlin 中的 generateSequence 函数
- r - 使用“caret”包运行决策树模型时出错
- java - 如何访问 Omnikey 3121 智能卡读卡器
- firebase - Flutter 中的 Cloud Firestore getAll() 等效项
- kubernetes - 尝试从 Web 客户端 (grpc-web) 调用 GRPC 服务器(在 GKE 上)时出现“404 未找到”
- wordpress - 古腾堡自定义元块不将元保存到自定义帖子类型
- android - 如何在颤振(android)应用程序中使用 C++ 代码?
- bash - Bash函数不回显附加参数