Вот вам очень хорошее объяснение:
http://www.regular -expressions.info / unicode.html
Некоторые подсказки:
"К сожалению, Java и .NET не поддерживают \X
(пока). Используйте \P{M}\p{M}*
в качестве замены. Чтобы сопоставить любое количество графем, используйте (?:\P{M}\p{M}*)+
вместо \X+
. "
" В Javaмаркер регулярного выражения \uFFFF
соответствует только указанной кодовой точке, даже если вы включили каноническую эквивалентность. Однако тот же синтаксис \uFFFF
также используется для вставки символов Unicode в буквенные строки в исходном коде Java. Pattern.compile("\u00E0")
будетсоответствует кодировке с одинарной и двойной кодовой точкой à
, тогда как Pattern.compile("\\u00E0")
соответствует только версии с одной кодовой точкой. Помните, что при записи регулярного выражения в виде строкового литерала Java обратная косая черта должна быть исключена. Первый код Java компилирует регулярное выражение à
, а второй - \u00E0
. В зависимости от того, что вы делаете, разница может быть значительной. "