Não é possível combinar perfeitamente todas essas strings como você as listou, já que não há como diferenciar algo como "orai18n-" e "-se2.0". Se você criar uma regex que procure sequências de dígitos e pontos que começam com um traço, você corresponderá a todas as sequências, exceto à "java-se2.0":
sed 's/.*-\([0-9\.][0-9\.]*\).*//'
(Dependendo da sua versão, você pode usar sed -r para permitir o uso de [0-9.] +)
Isso produz uma saída em que todas as versões reconhecidas são extraídas e toda a sequência exibida onde nada adequado é encontrado:
2.1
2.4.0
1.1
12.1.0.2
jdbc-se2.0
20070801
2.0.1
1.3
javax.annotation
4342
0.0.1
1.2