code: public static String merge(Map<Pattern,String> placeholders, String str) {
          if (Strings.isBlank(str)) {
              return str;
          }
          String replaced = str;
          for (Map.Entry<Pattern, String> entry : placeholders.entrySet()) {
              Pattern placeholder = entry.getKey();
              String value = entry.getValue();
              replaced = placeholder.matcher(replaced).replaceAll(value);
          }
          replaced = ESCAPED_OPEN_CURLY_BRACKET.matcher(replaced).replaceAll("{");// replace escaped with non escaped
          replaced = ESCAPED_CLOSE_CURLY_BRACKET.matcher(replaced).replaceAll("}");// replace escaped with non escaped
          return replaced;
      }
docs: <p>Merges the placeholder into the given string with the values present in the placeholder map.</p>
  <p>For given string:</p>
  <code><pre>
  this is {my.placeholder}'s {my.placeholder2} with {some.placeholder}. Signed {my.placeholder} ok ? \{my.placeholder\}</pre></code>
  <p/>
  <p>And for the following placeholder map:</p>
  <code><pre>
  {my.placeholder} = Laurent
  {my.placeholder2} = String</pre></code>
  <p/>
  <p>Then the resulting string will be:</p>
  <code><pre>
  this is Laurent's string with {some.placeholder}. Signed Laurent ok ? {my.placeholder}</pre></code>
  @param placeholders compiled placeholder map to use for merging placeholders in given string
  @param str string potentially containing placeholders
  @return merged string