Страницы

Поиск по вопросам

вторник, 23 октября 2018 г.

Русские символы regex в java

Почему получаются разные результаты следующих методов?
System.out.println("Путь\\Файл1.html".replaceAll("\\w+\\.\\w+","")); System.out.println("Path\\File1.html".replaceAll("\\w+\\.\\w+",""));
Вывод:
Путь\Файл Path\


Ответ

Потому что \w в регулярных выражения Java по умолчанию не находит все буквы и цифры Юникода.
Чтобы \w находил любые буквы и цифры, используйте флаг Pattern.UNICODE_CHARACTER_CLASS, или, внутри шаблона, (?U)
Онлайн-тест тут

и

Комментариев нет:

Отправить комментарий