检查句子中的单词是否为字母数字并返回alnum单词

时间:2017-09-20 13:50:10

标签: regex python-3.x alphanumeric

我一直在研究一个项目,我要检查用户输入的字符串是否是字母数字。 现在,我已经构建了我的代码,并且有一个函数需要检查是否有任何单词是否为字母数字。 该程序是让用户输入一个句子以及他的许可证号码,这个号码将是'221XBCS'之类的字母数字。因此,如果用户输入假设 - '我的许可证号是221124521'而不是221XBCS我希望程序停止。 但我当前的程序假设re.match条件始终为true。为什么这么做?

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值。这就是全部!

2 个答案:

答案 0 :(得分:0)

使用正则表达式,以相反的方式查看问题通常很有价值。 在这种情况下,更好的方法是查看字符串是不是纯粹的数字,而不是查看它是否是字母数字。

        if re.match('[^\d]', z):
            print('The string is no a pure numerical')

答案 1 :(得分:0)

我想我理解你的情况:用户应该输入他的许可证号码,该号码应该只包含字母字符 AND 数字(两者):

内置函数:

s = input("Please enter here:")
l_numbers = list(filter(lambda w: not w.isdigit() and not w.isalpha() and w.isalnum(), s.strip().split()))
l_number = l_numbers[0] if l_numbers else ''

print(l_number)

我们假设用户输入了My license number is 221XBCS thanks.
输出将是:

221XBCS