Bom dia!
Li o tópico http://www.guj.com.br/java/149224-como-fazer-esse-regex-de-qualquer-caracter
porém continuo não conseguindo fazer o que preciso.
Se alguém puder ajudar por favor.
Meu problema, resumindo, é o seguinte:
Receberei um texto que pode conter valores  com qualquer caracteres entre os delimitadores  <% e %>.
Preciso obter esses valores, que serão uma chave em um properties no qual obtenho um conteúdo específico, o qual pode ser qualquer coisa.
Não posso criar regras para esses valores, ou seja, não posso dizer que para informar & , deve-se informar &, por exemplo.
Criei um método apenas para teste:
 public static void main(String[] args) {
        String texto = "Teste <%ababababa%>  outro teste <%123b%&*&()a4b<b>%> teste de novo <%1@$%&*%&23b%&*()a4b<b>%> teste de novo <%1@$%&*%&23b%&*()&&&&a4b<b>%>";
        Pattern pattern = Pattern.compile("<%(.*?)%>");
        Matcher matcher = pattern.matcher(texto);
        String tags = "";
        while (matcher.find()) {
            String group = matcher.group(1);
            tags += group + " ";
            System.out.println(tags);
            texto = texto.replaceFirst("<%(.*?)%>", group);
            System.out.println(texto);
        }
       
    }O resultado, e erro, que exibido é o seguinte
ababababa 
Exception in thread "main" java.lang.IllegalArgumentException: Illegal group reference
	at java.util.regex.Matcher.appendReplacement(Unknown Source)
	at java.util.regex.Matcher.replaceFirst(Unknown Source)
	at java.lang.String.replaceFirst(Unknown Source)
	at com.cpqd.promus.ebpp2.teste.Test.main(Test.java:18)
Teste ababababa  outro teste <%123b%&*&()a4b<b>%> teste de novo <%1@$%&*%&23b%&*()a4b<b>%> teste de novo <%1@$%&*%&23b%&*()&&&&a4b<b>%>
ababababa 123b%&*&()a4b<b> 
Teste ababababa  outro teste 123b%&*&()a4b<b> teste de novo <%1@$%&*%&23b%&*()a4b<b>%> teste de novo <%1@$%&*%&23b%&*()&&&&a4b<b>%>
ababababa 123b%&*&()a4b<b> 1@$%&*%&23b%&*()a4b<b> Se eu retiro o  texto.replaceFirst("<%(.*?)%>", group); consigo visualizar normalmente tudo que está entre <% e %>.
Porém como relpaceFirst gera a exceção acima.