docs: function (regexName, regex, content, results) {
        var r;
        _log.debug("---------------------------------------------------------------------------------------------------");
        _log.debug('Process extraction with regex : "' + regexName + '"');
        _log.debug(regex);
        regex.lastIndex = 0;
        while ((r = regex.exec(content)) !== null) {
  
          // Result expected [STRING, KEY, SOME_REGEX_STUF]
          // Except for plural hack [STRING, KEY, ARRAY_IN_STRING]
          if (r.length >= 2) {
            var translationKey, evalString;
            var translationDefaultValue = "";
  
            switch (regexName) {
              case 'HtmlDirectiveSimpleQuote':
              case 'HtmlDirectiveDoubleQuote':
                translationKey = r[1].trim();
                translationDefaultValue = (r[2] || "").trim();
                break;
              case 'HtmlDirectivePluralFirst':
                if (!r.length > 2) {
                  return;
                }
                var tmp = r[1];
                r[1] = r[2];
                r[2] = tmp;
              case 'HtmlDirectivePluralLast':
                evalString = eval(r[2]);
                if (_.isArray(evalString) && evalString.length >= 2) {
                  translationDefaultValue = "{NB, plural, one{" + evalString[0] + "} other{" + evalString[1] + "}" + (evalString[2] ? ' ' + evalString[2] : '') + "}";
                }
                translationKey = r[1].trim();
                break;
              default:
                translationKey = r[1].trim();
            }
  
            // Avoid empty translation
            if (translationKey === "") {
              return;
            }
  
            switch (regexName) {
              case "commentSimpleQuote":
              case "HtmlFilterSimpleQuote":
              case "JavascriptServiceSimpleQuote":
              case "JavascriptServiceInstantSimpleQuote":
              case "JavascriptFilterSimpleQuote":
              case "HtmlNgBindHtml":
                translationKey = translationKey.replace(/\\\'/g, "'");
                break;
              case "commentDoubleQuote":
              case "HtmlFilterDoubleQuote":
              case "JavascriptServiceDoubleQuote":
              case "JavascriptServiceInstantDoubleQuote":
              case "JavascriptFilterDoubleQuote":
                translationKey = translationKey.replace(/\\\"/g, '"');
                break;
              case "JavascriptServiceArraySimpleQuote":
              case "JavascriptServiceArrayDoubleQuote":
                var key;
  
                if(regexName === "JavascriptServiceArraySimpleQuote") {
                  key = translationKey.replace(/'/g, '');
                } else {
                  key = translationKey.replace(/"/g, '');
                }
                key = key.replace(/[\][]/g, '');
                key = key.split(',');
  
                key.forEach(function(item){
                  item = item.replace(/\\\"/g, '"').trim();
                  if (item !== '') {
                    results[item] = translationDefaultValue;
                  }
                });
                break;
            }
  
            // Check for customRegex
            if (_.isObject(customRegex) && !_.isArray(customRegex) && customRegex.hasOwnProperty(regexName)) {
              if (_.isFunction(customRegex[regexName])) {
                translationKey = customRegex[regexName](translationKey) || translationKey;
              }
            }
  
            // Store the translationKey with the value into results
            var defaultValueByTranslationKey = function (translationKey, translationDefaultValue) {
              if (regexName !== "JavascriptServiceArraySimpleQuote" &&
                regexName !== "JavascriptServiceArrayDoubleQuote") {
                if (keyAsText === true && translationDefaultValue.length === 0) {
                  results[translationKey] = translationKey;
                } else {
                  results[translationKey] = translationDefaultValue;
                }
              }
            }
  
            // Ternary operation
            var ternaryKeys = _extractTernaryKey(translationKey)
            if (ternaryKeys) {
              _.forEach(ternaryKeys, function(v) {
                defaultValueByTranslationKey(v);
              });
            } else {
              defaultValueByTranslationKey(translationKey, translationDefaultValue);
            }
  
          }
        }
      }