Акцент в регулярных выражениях на Java - PullRequest
16 голосов
/ 20 апреля 2011

Я хотел бы использовать Hibernate Validator для проверки некоторых столбцов. Проблема, как я понимаю, в том, что маркер \ w в java не принимает буквы с акцентами на них.

Есть ли способ, которым я мог бы написать регулярное выражение, чтобы такие слова, как Relatório, могли быть проверены (я не хотел бы писать все буквы с акцентами в скобках, потому что я собираюсь написать это регулярное выражение во многих столбцах)

Ответы [ 2 ]

31 голосов
/ 20 апреля 2011

В документации Java regex есть раздел о категориях Юникода (поиск "Классы для блоков и категорий Юникода"). Если вы просто ищете буквы, я думаю, \p{L} - это та категория, которую вы хотите.

11 голосов
/ 05 марта 2015

Мне повезло больше:

\p{InCombiningDiacriticalMarks}+

В Java я использую следующий метод:

import java.text.Normalizer;
import java.text.Normalizer.Form;

public static String removeAccents(String text) {
    return text == null ? null :
        Normalizer.normalize(text, Form.NFD)
            .replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...