Basicamente o replaceAll remove todo conteúdo que for diferente de um número, o parseDouble converte e se for diferente de 0 ele prossegue.
Pra mim, assim parece que código executará com maior segurança, diferentemente de usar um método String
dadosEpisodios.stream()
.filter(s -> Double.parseDouble(s.imdb().replaceAll("[^0-9]", "0")) != 0)
.sorted(Comparator.comparing(DadosEpisodios::imdb).reversed())
.limit(5)
.forEach(System.out::println);