code: function matchDocFeature (filepath) {
              // reset regular lastIndex
              var content = grunt.file.read(filepath);
  
              if ( content ) {
  
                  var Slice = Array.prototype.slice;
                  // 识别注释标识
                  content.replace(rDocFeature, function (all, doc) {
                      if ( doc ) {
  
                          var fields = [];
                          // var module;
                          var factory;
                          var index;
  
                          // grunt.log.writeln(doc)
                          // 通用字段匹配
                          doc.replace(rCommField, function (all, key, belong, field) {
                              // grunt.log.writeln('dododo ----- ')
                              // grunt.log.writeln(belong)
                              key = key.replace(/\r/, '');
                              field = field.replace(/\r/, '');
                              
                              if ( key && !rSpecialField.hasOwnProperty(key) ) {
  
                                  fields.push({
                                      key: key,
                                      field: field,
                                      belong: belong ? belong.replace('for ', '') : ''
                                  });
  
                                  // 筛选主题字段
                                  if ( fieldIndexFactory.hasOwnProperty(key) ) {
                                      factory = key;
                                      index = field;
                                  }
                              }
                          });
  
                          // 特殊字段匹配，处理
                          for ( var i in rSpecialField ) {
                              var item = rSpecialField[i];
                              // reset last Index
                              doc.replace(item.exp, function () {
                                  var args = Slice.call(arguments, 0);
                                  // inset holder
                                  args.unshift(fields);
                                  // grunt.log.writeflags(fields)
                                  item.factory.apply(null, args)
                              })
                          }
                          // grunt.log.writeln(JSON.stringify(fields))
                          if ( factory ) {
                              // grunt.log.writeln(factory);
                              fieldIndexFactory[factory](index, fields);
                          }
                          // grunt.log.writeln(JSON.stringify(docJSON));
                      }
                  })
              }
  
          }
docs: 匹配文档标识 匹配字段标识