Я только что заметил новый пакет " regex " на pypi.(если я правильно понимаю, это тестовая версия нового пакета, который когда-нибудь заменит пакет stdlib re
).
Кажется, у него есть (помимо прочего) больше возможностей в отношении юникода.Например, он поддерживает \X
, который используется для сопоставления одной графемы (использует ли она объединение или нет).Он также поддерживает сопоставление свойств юникода, блоков и сценариев, поэтому вы можете использовать \p{M}
для ссылки на метки объединения.\X
, упомянутый ранее, эквивалентен \P{M}\p{M}*
(символ, который НЕ является знаком объединения, за которым следует ноль или более знаков объединения).
Обратите внимание, что это делает \X
более или менее эквивалентом Юникода..
, а не \w
, так что в вашем случае \w\p{M}*
- это то, что вам нужно.
Это (пока) пакет не-stdlib, и я не знаю, насколько готовэто так (и оно не входит в бинарный дистрибутив), но вы можете попробовать, так как это кажется самым простым / наиболее «правильным» ответом на ваш вопрос.(в противном случае, я считаю, что вам следует явно использовать диапазоны символов, как описано в моем комментарии к предыдущему ответу).
См. также эту страницу с информацией о регулярных выражениях Юникода, которая такжесодержит некоторую полезную информацию для вас (и может служить документацией для некоторых вещей, реализованных в пакете regex).