Используйте lookaheads для реализации пересечения множества:
(?x)(?:
(?!\x{d92})
[\x{d80}-\x{dff}]
)
Это создает атом, который соответствует вашим критериям.Пройдите отбор по желанию.
Я не доверяю вашей \uXXXX
записи.Это всегда плохой знак, когда вы видите что-то, что использует это, потому что это какая-то древняя нотация Unicode 1, которая предполагает только Plane 0.Это означает, что он не был полезен со времен Unicode 2, в далеком прошлом тысячелетии.Я бы избегал этого, если это вообще возможно, потому что вы не хотите заводить вредные привычки, которые не работают для 16/17 пространства имен Unicode.
Поэтому я использовал стандартную запись \x{...}
используется в Java 7, ICU и Perl, которые не фанатичны в отношении плоскостей 1-16 Unicode.Действительно, в языках, представленных в представлении UTF-16 (да, Java, я смотрю на вас), это единственный возможный способ создания диапазонов, отличных от BMP.