Вы ищете определенные символы или все символы вне BMP?
Если первое, вы можете использовать StringBuilder
для построения строки, содержащей кодовые точки из более высоких плоскостей, и регулярное выражение будет работать какожидается:
String test = new StringBuilder().append("test").appendCodePoint(0x10300).append("test").toString();
Pattern regex = Pattern.compile(new StringBuilder().appendCodePoint(0x10300).toString());
Matcher matcher = regex.matcher(test);
matcher.find();
System.out.println(matcher.start());
Если вы хотите удалить всех не-BMP символов из строки, то я бы использовал StringBuilder
напрямую, а не регулярное выражение:
** 1011