Как я могу добавить к регулярному выражению replaceAll, чтобы я тоже не хотел менять дефис (-) (то есть каждую пунктуацию, кроме - и ')?
long l = Arrays.stream(words ).map(n -> n.replaceAll("(?!')\\p{Punct}","")).map(String::toLowerCase).distinct().count();