Могу ли я объединить Unicode категории в Regex? - PullRequest
2 голосов
/ 16 февраля 2020

Я хочу получить такой набор символов:

  1. \P{L} использование категории юникода в качестве базовой
  2. добавление хХxXтТTоОoO0 символов в \P{L} категорию юникода
  3. не используйте символы -_.

При этом я получаю такое регулярное выражение в Java:

[[\P{L}]&&[^-_.]&&[хХxXтТTоОoO0]]

Но это не работает, что не так?

1 Ответ

1 голос
/ 16 февраля 2020

Чтение эта страница с использованием &&[хХxXтТTоОoO0] означает пересечение.

Вы можете добавить соответствующий хХxXтТTоОoO0 в первый класс символов [\\P{L}хХxXтТTоОoO0]

Затем используйте вычитание для этого класса символов с использованием &&[^-_.]

[[\\P{L}хХxXтТTоОoO0]&&[^-_.]] 

Java demo

Пример

final String regex = "[[\\P{L}хХxXтТTоОoO0]&&[^-_.]]";
final String string = "aTo-_.#$";

final Pattern pattern = Pattern.compile(regex);
final Matcher matcher = pattern.matcher(string);

while (matcher.find()) {
    System.out.println(matcher.group(0));
}

Вывод

T
o
#
$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...