Python как проверить регуляркой, что строка состоит только из цифр/букв
надо чтоб так:
inp1 = '123русEng'
inp2= '!?-_07'
checkWithReg( inp1 )
>>> True
checkWithReg( inp2 )
>>> False
как checkWithReg должно выглядеть?
Ответы (2 шт):
Автор решения: Wiktor Stribiżew
→ Ссылка
re.fullmatch('[a-zA-Z0-9]', 'fgdf') возвращает False, так как в строке четыре буквы, а не одна: [a-zA-Z0-9] находит только одну букву или цифру.
Чтобы проверить, состоит ли строка целиком из букв или цифр, используйте
re.fullmatch(r'[a-zA-Z0-9]+', 'fgdf') # 0 и более цифр/букв
re.search(r'^[a-zA-Z0-9]*\Z', 'fgdf') # версия с re.search
re.fullmatch(r'[a-zA-Z0-9]*', 'fgdf') # 1 и более цифр/букв
re.search(r'^[a-zA-Z0-9]*\Z', 'fgdf') # версия с re.search
Подробности
^- начало строки[a-zA-Z0-9]*- 0 и более цифр/букв[a-zA-Z0-9]+- 1 и более цифр/букв\Z- конец строки.
Автор решения: Fox Fox
→ Ссылка
Я не совсем понял условие. Что это значит: цифр/букв? "Цифр и букв" или "цифр или букв"? Это принципиально разные вещи. Я написал решение для "цифр и букв", исходя из содержимого переменных:
import os
import re
inp1 = '123русEng'
inp2= '!?-_07'
def checkWithReg(s): print(bool(re.match(r'^[\w]+$', s)))
checkWithReg(inp1)
checkWithReg(inp2)
os.system("pause > nul")