Regex не всегда является самым ясным способом обработки текста, даже если он самый быстрый.
Вы можете присвоить регулярное выражение переменной, а затем вставить его с помощью текста интерполяции:
accent_chars = '[ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöœøùúûüýþÿ]'
my_regex = '^...%s*...$' % accent_chars
Вы можете также использовать эти диапазоны:
[œÀ-ÖØ-öø-ÿ]
Демонстрация с использованием Python 3:
>>> import re
>>> s = 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöœøùúûüýþÿ'
>>> ''.join(re.findall('[œÀ-ÖØ-öø-ÿ]', s))
'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöœøùúûüýþÿ'
>>> len(''.join(re.findall('[œÀ-ÖØ-öø-ÿ]', s))) == len(s)
True
Недостатком является то, что не сразу понятно кому-то незнакомому с Unic что это охватывает каждый желаемый случай.
Это одна на самом деле выглядит довольно хорошо. –
Возможное решение может заключаться в использовании кодов для этих символов ... –
Вы должны включить якорь '^' в начале (чтобы вы не просто соответствовали концу строки), а вместо '+' вместо ' '*', если вы не хотите сопоставить пустую строку. –