Как проверить, что первая буква заглавная? Регулярные выражения в 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 шт):
Чтобы название не начиналось с маленькой буквы, используйте следующую проверку:
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).