Вы можете использовать пересечения / вычитания классов символов в Java regex, чтобы ограничить «общий» класс символов.
Класс символов
blockquote>[a-z&&[^aeiuo]]
соответствует одной букве, которая не является гласным. Другими словами: он соответствует одному согласному.Используйте
"^[\u0000-\uFFFF&&[^_%]]+$"
для соответствия всем символам Юникода, кроме
_
и%
.Подробнее о пересечениях / вычитаниях класса символов, доступных в Java regex, см. Учебные пособия Java ™: классы символов .
Тестирование в OCPSoft Visual Regex Tester , показывающий, что нет совпадений, когда к строке добавляется
%
:И демонстрация Java :
String input = "this"; Pattern p = Pattern.compile("[\u0000-\uFFFF&&[^_%]]+"); // No anchors because `matches()` is used Matcher m = p.matcher(input); boolean result = m.matches(); System.out.println(result); // => true