Expressao Regular - Exceto "."

Tem como definir uma expressão regular que quebre por todos as pontuacoes exceto ponto?

Ex:

String[] splited = str.split("\\p{Punct}^\\.");
Ou
String[] splited = str.split("\\W^\\.");

Não queria colocar todos os caracteres: !|"|#|$|%|&|’|(|)|*|+|,|-|/|:|;|<|=|>|?|@|[||]|^|_|`|{|||}|~

Outra dúvida é excluir grupos:. Por exemplo, dar match em números q não sejam datas (21.12.1983)

Pattern p = Pattern.compile("(\\d+(\\.\\d+)*)^(\d{2}\\.\\d{2}\\.(\\d{2}|\\d{4}))");

Obs: O “^” seria a exclusao q desejo.

Obrigado pela ajuda

Olá tupy!

Sobre a primeira expressão regular… Segue:

String[] splited = str.split("[\\p{Punct}&&[^\\.]]");

Já a segunda, poderia explicar melhor sua necessidade? (De preferência com exemplos)

[]'s

Valeu pela ajuda na primeira expressao. =)

Preciso remover em um texto todos os pontos, exceto quando for do padrao data.

Ex:

DECISÃO LIMINAR PROFERIDA NA ADI-MC N° 3.395/DF de 30.01.1998
Ficaria:
DECISÃO LIMINAR PROFERIDA NA ADI-MC N° 3395/DF de 30.01.1998

package exemplos;

class RemoverPontos {
	public String removerPontos (String str) {
		String strDatas = str.replaceAll ("(\\d{2})\\.(\\d{2})\\.(\\d{4})", "$1\uFFFE$2\uFFFE$3");
		return strDatas.replaceAll ("\\.", "").replaceAll("\uFFFE", ".");
	}
	
	public static void main(String[] args) {
		System.out.println ((new RemoverPontos()).removerPontos ("DECISÃO LIMINAR PROFERIDA NA ADI-MC N° 3.395/DF de 30.01.1998"));
	}
}

Uso o velho truque de “substituir uma coisa por outra, temporariamente” (neste caso, troquei temporariamente “.” por “\uFFFE” se o ponto for um separador de datas.