Вы правы, что классы свойств Unicode не поддерживаются анализатором регулярных выражений Python.
Если вы хотите сделать хороший хак, который был бы в целом полезен, вы можете создать препроцессор, который сканирует строку для таких токенов класса (\p{M}
или чего-либо другого) и заменяет их соответствующими наборами символов, так например, \p{M}
станет [\u0300–\u036F\u1DC0–\u1DFF\u20D0–\u20FF\uFE20–\uFE2F]
, а \P{M}
станет [^\u0300–\u036F\u1DC0–\u1DFF\u20D0–\u20FF\uFE20–\uFE2F]
.
Люди будут вам благодарны. :)