gpt4 book ai didi

javascript - 如何识别以下代码模式

转载 作者:IT老高 更新时间:2023-10-28 23:16:33 25 4
gpt4 key购买 nike

我有一个 js promise 模式,我想为几个关键字识别

例如,如果我输入如下代码:

var deferred = Q.defer();

在文件中我也有以下各自的值

deferred.reject(err);
deferred.resolve();
return deferred.promise;

完整代码

EXAMPLE 1

function writeError(errMessage) {
var deferred = Q.defer();
fs.writeFile("errors.log", errMessage, function (err) {
if (err) {
deferred.reject(err);
} else {
deferred.resolve();
}
});
return deferred.promise;
}

如果我把大代码文件(作为字符串)找到那个此文件包含模式

另一个例子

var d = Q.defer();/* 或 $q.defer */

并且在文件中,您还具有以下各自的值

d.resolve(val);
d.reject(err);
return d.promise;

Complete EXAMPLE 2

function getStuffDone(param) {           
var d = Q.defer(); /* or $q.defer */

Promise(function(resolve, reject) {
// or = new $.Deferred() etc.
myPromiseFn(param+1)
.then(function(val) { /* or .done */
d.resolve(val);
}).catch(function(err) { /* .fail */
d.reject(err);
});
return d.promise; /* or promise() */

}

有开源可以用来做这样的分析(提供一个模式,它会找到......)

childProcess 有一些更复杂的模式,但现在还可以 :)

最佳答案

下面的正则表达式可能看起来有点吓人,但它是从简单的概念构建的,并且比你提到的有更多的余地 - 例如额外的空格、不同的变量名、省略 var 等。似乎对这两个示例都有效 - 请查看它是否满足您的需求。

([^\s\r\n]+)\s*=\s*(?:Q|\$q)\.defer\s*\(\s*\)\s*;(?:\r?\n|.)*(?:\s|\r?\n)(?:\1\.reject\(\w+\)\s*;(?:\r?\n|.)*(?:\s|\r?\n)\1\.resolve\(\s*\w*\)\s*;|\1\.resolve\(\s*\w*\)\s*;(?:\r?\n|.)*(?:\s|\r?\n)\1\.reject\(\w+\)\s*;)(?:\r?\n|.)*(?:\s|\r?\n)return\s+(?:\1\.)?promise\s*;

Regular expression visualization

Debuggex Demo

关于javascript - 如何识别以下代码模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34898600/

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