2017-09-06 137 views
0

中最后一次出现我有一个自定义的要求,我需要更换的右括号空字符串最后一次出现,咕噜替换匹配的字符串

如何能够做到用咕噜替换?

在下面Templates.js文件我替换

angular.module('abc.templates', []).run(
with 
return 

Templates.js

现在我在线,以除去不必要的闭括号: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行的最后一个括号')'。

有人可以帮助我用任何正则表达式或其他方式来实现这一目标吗?

回答

0

使用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: '$1$3' 
      } 
      ] 
     }, 
     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'); 
}; 

其他信息

  1. 第一match正则表达式patterns阵列中使用的模式解释为here。这处理angular.module('abc.templates', []).run(的第一部分return
  2. patterns阵列中使用的第二个match正则表达式模式解释为here。这从}]);移除闭括号)}];

落得:第二正则表达式将在初始angular.module('abc.templates', []).run(部分之后的字符}]);的第一个实例相匹配,并从中取出)。所以,不幸的是,如果模式}]);发生在你的函数体内的其他地方,这将不符合你的要求。否则它应该没问题。

+0

感谢您的回应,它帮助了我。 – user804401