Regex formatação do CNPJ e CPF não funciona

import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;

public class ValidaCNPJCPF {
    public static void main(String[] args) {
        try {
            Pattern pattern = Pattern.compile("881.499.606-78");
            Matcher matcher = pattern.matcher("([0-9]{2}[\\.]?[0-9]{3}[\\.]?[0-9]{3}[\\/]?[0-9]{4}[-]?[0-9]{2})|([0-9]{3}[\\.]?[0-9]{3}[\\.]?[0-9]{3}[-]?[0-9]{2})");

            if (matcher.matches()) { // VALIDA FORMATAÇÃO DO CPF OU O CNPJ
            	System.out.println("SIM");
            } else {
            	System.out.println("NAO");
            }
            	
        } catch (PatternSyntaxException ex) {
            ex.printStackTrace();
        }
    }
}

Eu prefiro usar um matcher para CPF e outro para CNPJ.

Não funciona porque vc inverteu as coisas.

Em Pattern.compile vc deve passar a expressão, e em pattern.matcher deve passar a string que será verificada. Ou seja:

Pattern pattern = Pattern.compile("([0-9]{2}[\\.]?[0-9]{3}[\\.]?[0-9]{3}[\\/]?[0-9]{4}[-]?[0-9]{2})|([0-9]{3}[\\.]?[0-9]{3}[\\.]?[0-9]{3}[-]?[0-9]{2})");
Matcher matcher = pattern.matcher("881.499.606-78");

E outra coisa, não precisa de colchetes para o ponto, hífen e barra. Ou seja, pode ser apenas \\. em vez de [\\.] - o mesmo vale para a barra e o hífen. Aliás, o hífen também não precisa de \\ antes. E como ambos terminam com “hífen seguido de dois dígitos”, pode agrupar somente o início e no final coloque -?[0-9]{2} apenas uma vez. Ou seja:

Pattern pattern = Pattern.compile("([0-9]{2}\\.?[0-9]{3}\\.?[0-9]{3}\\/?[0-9]{4}|[0-9]{3}\\.?[0-9]{3}\\.?[0-9]{3})-?[0-9]{2}");
1 curtida

Grato. Resolvido.