Grunt 替换最后一次出现的匹配字符串
Grunt replace last occurrence of matching string
我有一个自定义要求,我需要用空字符串替换最后一次出现的右大括号,
如何使用 Grunt-replace 实现?
在下面的 Templates.js 文件中,我正在替换
angular.module('abc.templates', []).run(
with
return
Templates.js
现在我必须删除下面 line:20 处不必要的右大括号。
angular.module('abc.templates', []).run(['$templateCache', function($templateCache) {
$templateCache.put("test",
//
//
//
$templateCache.put("test",
//
//
//
$templateCache.put("test",
//
//
//
$templateCache.put("test",
//
//
//
line 20: }]);
在上面的 Templates.js 文件中,我想删除上面提到的第 20 行最后一次出现的右大括号 ')'。
有人可以用任何正则表达式或其他方式帮助我实现这一目标吗?
使用 grunt-replace 您可以尝试以下配置:
Gruntfile.js
module.exports = function (grunt) {
grunt.initConfig({
replace: {
templateJs: {
options: {
usePrefix: false,
patterns: [
{
match: /angular\.module\('abc\.templates', \[\]\)\.run\(/g,
replacement: 'return '
},
{
match: /(angular\.module\('abc\.templates', \[\]\)\.run\([\w\W]+?}])(\))(;)/g,
replacement: ''
}
]
},
files: [
// Define your paths as necessary...
{expand: true, flatten: true, src: ['src/template.js'], dest: 'build/'}
]
}
}
});
grunt.loadNpmTasks('grunt-replace');
grunt.registerTask('default', 'replace:templateJs');
};
附加信息
patterns
数组中使用的第一个 match
正则表达式模式已解释 here。这处理了用 return
替换 angular.module('abc.templates', []).run(
的第一部分
- 解释了
patterns
数组中使用的第二个 match
正则表达式模式 here。这从 }]);
中删除右大括号 )
以 }];
结束
注意:第二个正则表达式将匹配初始 angular.module('abc.templates', []).run(
部分之后字符 }]);
的第一个实例,并删除 )
从中。因此,不幸的是,如果模式 }]);
出现在函数主体的其他地方,这将无法满足您的要求。否则应该没问题。
我有一个自定义要求,我需要用空字符串替换最后一次出现的右大括号,
如何使用 Grunt-replace 实现?
在下面的 Templates.js 文件中,我正在替换
angular.module('abc.templates', []).run(
with
return
Templates.js
现在我必须删除下面 line:20 处不必要的右大括号。
angular.module('abc.templates', []).run(['$templateCache', function($templateCache) {
$templateCache.put("test",
//
//
//
$templateCache.put("test",
//
//
//
$templateCache.put("test",
//
//
//
$templateCache.put("test",
//
//
//
line 20: }]);
在上面的 Templates.js 文件中,我想删除上面提到的第 20 行最后一次出现的右大括号 ')'。
有人可以用任何正则表达式或其他方式帮助我实现这一目标吗?
使用 grunt-replace 您可以尝试以下配置:
Gruntfile.js
module.exports = function (grunt) {
grunt.initConfig({
replace: {
templateJs: {
options: {
usePrefix: false,
patterns: [
{
match: /angular\.module\('abc\.templates', \[\]\)\.run\(/g,
replacement: 'return '
},
{
match: /(angular\.module\('abc\.templates', \[\]\)\.run\([\w\W]+?}])(\))(;)/g,
replacement: ''
}
]
},
files: [
// Define your paths as necessary...
{expand: true, flatten: true, src: ['src/template.js'], dest: 'build/'}
]
}
}
});
grunt.loadNpmTasks('grunt-replace');
grunt.registerTask('default', 'replace:templateJs');
};
附加信息
patterns
数组中使用的第一个match
正则表达式模式已解释 here。这处理了用return
替换 - 解释了
patterns
数组中使用的第二个match
正则表达式模式 here。这从}]);
中删除右大括号)
以}];
结束
angular.module('abc.templates', []).run(
的第一部分
注意:第二个正则表达式将匹配初始 angular.module('abc.templates', []).run(
部分之后字符 }]);
的第一个实例,并删除 )
从中。因此,不幸的是,如果模式 }]);
出现在函数主体的其他地方,这将无法满足您的要求。否则应该没问题。