Python-我怎么重新使用的整个字符串匹配(Python- how do I use re to

2019-08-22 00:32发布

我验证由用户输入的文本,使其只接受字母而不是数字。 到目前为止,我的代码工作正常,当我在一个编号(如56)型,它警告我说,我应该只键入字母,当我在字母键入它不返回任何东西(像它应该做的)。 我的问题是,它接受它,当我键入字母后跟数字如(S45)开始。 它的作用是接受的第一个字母而不是整个字符串。 我需要接受整个字符串。

def letterCheck(aString):
    if len(aString) > 0:
        if re.match("[a-zA-Z]", aString) != None:
            return ""
    return "Enter letters only"

Answer 1:

它锚的开始和结束,并匹配一个或多个字符:

if re.match("^[a-zA-Z]+$", aString):

这里^锚字符串的开始, $到最后,和+可以确保你1个或多个字符相匹配。

你会更好只使用str.isalpha()虽然代替。 无需达到这里的大幅正则表达式锤:

>>> 'foobar'.isalpha()
True
>>> 'foobar42'.isalpha()
False
>>> ''.isalpha()
False


Answer 2:

使用您正则表达式+原始字符串边界编码正则表达式,如下所示:

r"^[a-zA-Z]+$"


Answer 3:

你可能会考虑在字符串中使用因而isalpha()。 如果字符串包含什么,但字母,否则为false返回true。

if aString.isalpha():
   do something
else:
   handle input error


Answer 4:

如果你看漂亮的Python的著作,去因而isalpha和isdecimal:

str = u"23443434";
print str.isdecimal();


文章来源: Python- how do I use re to match a whole string