프로젝트 작업을하고 있으며 사용자가 입력 한 문자열이 영숫자인지 확인해야합니다. 지금은 코드를 만들었으며 단어가 영숫자인지 아닌지 확인해야하는 기능이 하나 있습니다. 프로그램은 사용자가 '221XBCS'와 같은 영숫자 인 라이센스 번호와 함께 문장을 입력하게합니다. 따라서 사용자가 221XBCS 대신 'My license number is 221124521'을 입력하면 프로그램을 중지하고 싶습니다. 그러나 현재 프로그램에서는 re.match 조건이 항상 true라고 가정합니다. 왜 그래야만하지??문장의 단어가 영숫자인지 확인하고 alnum 단어를 반환하십시오.
import re
s = input("Please enter here:")
if re.search(r'\bnumber \b',s):
x = (s.split('number ')[1])
y = x.split()
z = y[0]
print(z)
if re.match('^[\w-]+$', z):
print('true')
else:
print('False')
출력 지금은 다음과 같습니다
Please enter here:my license number is 221
is
true
내가 내 프로그램은 입력에서 alnum 값을 잡아 싶어요. 그게 다야!
'is'는'^ [\ w -] + $'와 (과) 일치합니다. 그러므로 사실입니다. 입력이 영숫자인지 확인해야하는 경우 isalnum()을 사용할 수도 있습니다. 하지만 하이픈을 지원해야한다는 것도 알기 때문에're.search (r "\ bnumber \ s + ([\ -] +)", s)'를 사용하면 안되며, 일치하면'그룹 (1)'가치? –
'내 면허 번호 22184849'라고 입력 한 경우에도 조건에 해당됩니다. 내가 're.search (r "\ bnumber \ s + ([\ w -] +)"를 사용하면 AttributeError :'str '객체에'group '속성이 없습니다. –
@TarakShah, 조건을 정교하게 작성하십시오. '숫자'라는 단어는 필수입니까? – RomanPerekhrest