@Arbil

Поможете с регулярными выражениями?

Мне нужно проверить входит ли в строку число, большая буква и маленькая буква(любого алфавита)
У меня есть такой код
import re

string = 'Ab1'

if re.match(r'[a-z]\w', string) and re.match(r'[A-Z]\w', stringand re.match(r'[0-9]\w', string):
    print(1)


Но я не знаю почему он не работает
  • Вопрос задан
  • 81 просмотр
Решения вопроса 1
SoreMix
@SoreMix
yellow
Например, так
if any([x.islower() for x in a]) and any([x.isupper() for x in a]) and any([x.islower() for x in a]):
    print('True')


Ну или регекс
if re.search('[A-Z]', a) and re.search('[a-z]', a) and re.search('[0-9]', a):
    print('True')
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
У вас код синтаксически некорректен.
Лучше вообще как-то так:
>>> a = 'ddf%%21b#'
>>> b = '%%$  #'
>>> 
>>> 
>>> any([x.isdigit() or x.isalpha() for x in a])
True
>>> any([x.isdigit() or x.isalpha() for x in b])
False
>>>

Если нужна проверка что входит И число, И большая, И маленькая буква - то:
>>> a = 'fgdf1'
>>> all([
    any([x.isdigit() for x in a]),
    any([x.isalpha() and x.islower() for x in a]),
    any([x.isalpha() and x.isupper() for x in a])
])
False
>>> a = 'ssdS2'
True
>>> a = '4455'
False
>>> a = '4##sedfsdfD'
True


Регулярками:
>>> import re
>>> bool(re.match('.*([a-z]|[A_Z]|[0-9]).*', ''))
False
>>> bool(re.match('.*([a-z]|[A_Z]|[0-9]).*', '$###@@*'))
False
>>> bool(re.match('.*([a-z]|[A_Z]|[0-9]).*', '$##e#@@*'))
True
>>> bool(re.match('.*([a-z]|[A_Z]|[0-9]).*', '$##34#@@*'))
True
>>>

> (любого алфавита)
Но с этим придется попотеть. Поэтому первый способ предпочтителен.
Ответ написан
LazyTalent
@LazyTalent
Data Engineer, Freelancer
1. Переопределять стандартные модули/функции не очень хорошая идея.
2. `stringand` - что это такое?
3. Кто-то запутался в скобках
4. `[0-9]\w` - чтобы вот это сработало, то строка дб например такой: "Ab1somethingelsehere"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
deeplay Новосибирск
от 130 000 ₽
от 130 000 ₽
Enjoy PRO Санкт-Петербург
от 140 000 до 180 000 ₽
20 окт. 2020, в 22:57
5000 руб./за проект
20 окт. 2020, в 21:37
300000 руб./за проект
20 окт. 2020, в 21:18
500 руб./за проект