@vega2475

Как составить регулярное выражение?

Не могу понять как в данном случае составить регулярное выражение (хотя вроде одно из самых простых)
Нужно с помощью метода split() разбить строку на массив строк, гже каждый элемент массива это слово.

- Прошу садиться.
Мари Лоран опустилась в глубокое кожаное кресло.
Пока профессор Керн вскрывал конверт и читал письмо, она бегло осмотрела кабинет.
Какая мрачная комната! Но заниматься здесь хорошо: ничто не отвлекает внимания. Лампа с глухим абажуром освещает только письменный стол, заваленный книгами, рукописями, корректурными оттисками. Глаз едва различает солидную мебель черного дуба. Темные обои, темные драпри. В полумраке поблескивает только золото тисненых переплетов в тяжелых шкафах. Длинный маятник старинных стенных часов движется размеренно и плавно.
Переведя взгляд на Керна, Лоран невольно улыбнулась: сам профессор целиком соответствовал стилю кабинета. Будто вырубленная из дуба, тяжеловесная, суровая фигура Керна казалась частью меблировки. Большие очки в черепаховой оправе напоминали два циферблата часов. Как маятники, двигались его глаза серо-пепельного цвета, переходя со строки на строку письма. Прямоугольный нос, прямой разрез глаз, рта и квадратный, выдающийся вперед подбородок придавали лицу вид стилизованной декоративной маски, вылепленной скульптором-кубистом.
"Камин украшать такой маской", - подумала Лоран.


Как я понял вроде бы нужно составить регулярное выражение которое будет разбивать по пробелу или по двум пробелам или по точке и пробелу или по запятой и пробелу (двум пробелам также), но не пойму как это написать

Проблема в том что тут и кавычки и запятые и точки и переход строки и там где двойной пробел тоже проблема.

(тут почему-то двойные пробелы урезаются до одного)
  • Вопрос задан
  • 85 просмотров
Пригласить эксперта
Ответы на вопрос 3
akelsey
@akelsey
сплит по пробелу, в цикле знаки препинания заменить на "" (ничто).
или даже наоборот сначала заменить все знаки препинания на "" (ничто) - а "-" на пробел, и уже потом сплит.
Ответ написан
Комментировать
@Wan-Derer
Зобанели на Хабре, волки́ ;((
Как вариант:
String s = """
    ... ваш текст ...
    """;

List<String> words = Arrays.stream(s.split("[ ,\\p{Punct},\n]"))
    .filter(w -> !w.isEmpty())
    .toList();

System.out.println(words);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы