Как удалить из строки все знаки препинания и символы новой строки?

Как выглядит регулярка для этого? Про p{Punct} знаю, а вот как добавить к ней другие символы - нет.

public static void main(String[] args) throws IOException {
            BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
            BufferedReader bfr = new BufferedReader(new FileReader(reader.readLine()));
            BufferedWriter bfw = new BufferedWriter(new FileWriter(reader.readLine()));
            String fileContent = "";
    
            while (bfr.ready()) {
                fileContent = fileContent + ((char) bfr.read());
            }
            String fileContentChanged = fileContent.replaceAll("\\p{Punct}", ""); /* в регулярке не хватает символов новой строки */
            bfw.write(fileContentChanged);
            reader.close();
            bfr.close();
            bfw.close();
        }
    }

P.S. Я понимаю, что можно просто создать новую строку и изменить следующей регуляркой, но это похоже на костыль.


Ответы (1 шт):

Автор решения: Wiktor Stribiżew

Вы можете использовать

"[\\p{Punct}\r\n]"

или

"[\\p{Punct}\\s&&[^\\h]]"

"[\\p{Punct}\r\n]" найдёт все знаки пунктуации, а также символы CR и LF.

"[\\p{Punct}\\s&&[^\\h]]" найдёт все знаки пунктуации, а также любые "вертикальные" пробельные символы (т.е. все пробельные символы, которые находит шаблон \s, кроме тех, которые находит \h, т.е. "горизонтальные" пробельные символы).

→ Ссылка