docs: public static void main(String[] args) throws Exception {
          Map<String, Object> parameters = new HashMap<String, Object>();
          parameters.put("table", "my_table_name");
          parameters.put("id", "my_id");
          parameters.put(":1", "first_param");
  
          final Pattern PATTERN = Pattern.compile("\\{([a-zA-Z0-9_\\.\\:]+)\\}|##\\((.+)\\)");
  
          String sql = "select form ##(:table) {name} where {id}='{1}'";
  
          StringBuilder sb = new StringBuilder(sql.length() + 200);
          Matcher matcher = PATTERN.matcher(sql);
          int start = 0;
          while (matcher.find(start)) {
              sb.append(sql.substring(start, matcher.start()));
              String group = matcher.group();
              String key = null;
              if (group.startsWith("{")) {
                  key = matcher.group(1);
              } else if (group.startsWith("##(")) {
                  key = matcher.group(2);
              }
              System.out.println(key);
              if (key == null || key.length() == 0) {
                  continue;
              }
              Object value = parameters.get(key); // 针对{paramName}、{:1}两种情况
              if (value == null) {
                  if (key.startsWith(":") || key.startsWith("$")) {
                      value = parameters.get(key.substring(1)); // 针对{:paramName}的情况
                  } else {
                      char ch = key.charAt(0);
                      if (ch >= '0' && ch <= '9') {
                          value = parameters.get(":" + key); // 针对{1}两种情况
                      }
                  }
              }
              if (value == null) {
                  value = parameters.get(key); // 针对常量的情况
              }
              if (value != null) {
                  sb.append(value);
              } else {
                  sb.append(group);
              }
              start = matcher.end();
          }
          sb.append(sql.substring(start));
          System.out.println(sb);
  
      }