Разделить строку на кириллице на слова, используя String.split(regex)

В сервлет поступает строка из http-запроса (у запроса установлена кодировка utf-8). Разделяю строку на слова с помощью split("\\W+"). С латиницей работает, а с кириллицей - нет. Как разбить на не словесные символы строку на кириллице?


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

Автор решения: gil9red

Попробуйте перечислить кириллицу в регулярке:

split("[^а-яА-ЯёЁ\\w]")
→ Ссылка
Автор решения: Stanislav Volodarskiy

split("\\W+") выделяет слова только из ASCII символов.

split("\\P{L}+") выделяет слова на всех языках мира:

import java.util.Scanner;

public class GetWords {
    public static void main(String... args) {
        Scanner s = new Scanner(System.in);
        while (s.hasNextLine()) {
            String line = s.nextLine();
            String[] words = line.split("\\P{L}+");
            for (String w : words) {
                System.out.println("\"" + w + "\"");
            }
            System.out.println();
        }
    }
}
$ javac GetWords.java
$ echo "Hello world! Привет, мир! 你好,世界!" | java GetWords
"Hello"
"world"
"Привет"
"мир"
"你好"
"世界"
→ Ссылка