Подтвердить что ты не робот

Акцент в регулярном выражении в Java

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

\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}+", "");
}