Without using u
flag the hex range that can be used is [\\x{00}-\\x{ff}]
, but with u
flag it goes up to a 4-byte value \\x{7fffffff}
As minitech suggests in the first comment, you have to use the codepoint - for this character, it's \x{210C1}
. That's also the encoded form in UTF-32.
F0 AF AB BF
is the UTF-8 encoded sequence (see http://www.unicode.org/cgi-bin/GetUnihanData.pl?codepoint=210C1).
There are some versions of PCRE where you can use values up to \x{7FFFFFFF}
. But I really don't know what could be matched with it.
To quote http://www.pcre.org/pcre.txt:
In UTF-16 mode, the character code is Unicode, in the range 0 to 0x10ffff, with the exception of values in the range 0xd800 to 0xdfff because those are "surrogate" values that are used in pairs to encode values greater than 0xffff.
[...]
In UTF-32 mode, the character code is Unicode, in the range 0 to 0x10ffff, with the exception of values in the range 0xd800 to 0xdfff because those are "surrogate" values that are ill-formed in UTF-32.
0x10ffff
is the largest value you can use to match a character (that's what I extract from this). 0x10ffff
is currently also the largest code point defined in the unicode standard (see What are some of the differences between the UTFs?) - thus every value above does not make any sense (or I just don't get it)...