Как проверить, что первая буква заглавная? Регулярные выражения в Python django

forms

class SettingServiceAddForm(forms.ModelForm):
    class Meta:
        model = Service
        fields = ['name']

    def clean_name(self):
        name = self.cleaned_data['name']
        if re.match(r'\w', name):
            raise ValidationError('Название не должно начинаться с маленькой буквы')
        return name

как сделать регулярное выражение, чтобы название не начиналось с маленькой буквы буквы?


Ответы (1 шт):

Автор решения: Wiktor Stribiżew

Чтобы название не начиналось с маленькой буквы, используйте следующую проверку:

if name[0].islower():
    raise ValidationError('Название не должно начинаться с маленькой буквы')

Если по какой-то причине вам нужно найти маленькую букву с помощью именно регулярного выражения, вы можете использовать [a-zа-яё].

Если требуется поддержка всех маленьких букв в разных языках, установите модуль PyPi regex и используйте \p{Ll} или [[:lower:]]. Заглавные буквы можно найти с помощью \p{Lu} или [[:upper:]]. Если установить regex не входит в ваши планы, можно создать подобный шаблон и с помощью re:

import sys
lowers = '[{}]'.format("".join([chr(i) for i in range(sys.maxunicode) if chr(i).islower()]))
uppers = '[{}]'.format("".join([chr(i) for i in range(sys.maxunicode) if chr(i).isupper()]))

Переменные lowers и uppers можно затем использовать для создания разных регулярных выражений, например, для нахождения всех слов, начинающихся с заглавной или маленькой буквы, re.findall(fr'\b{uppers}[^\W\d_]*\b', text) или re.findall(fr'\b{lowers}[^\W\d_]*\b', text).

→ Ссылка