Python-如何使用re匹配整个字符串

Python-如何使用re匹配整个字符串,python,string,match,Python,String,Match,我正在验证用户输入的文本,以便它只接受字母而不接受数字。到目前为止,当我键入一个数字(例如56)时,我的代码工作正常,它警告我应该只键入字母,而当我键入字母时,它不会返回任何内容(就像它应该做的那样)。我的问题是,当我开始键入字母后接数字时,它会接受它,例如(s45)。它所做的是接受第一个字母,而不是整个字符串。我需要它来接受整个字符串 def letterCheck(aString): if len(aString) > 0: if re.match("[a-zA

我正在验证用户输入的文本,以便它只接受字母而不接受数字。到目前为止,当我键入一个数字(例如56)时,我的代码工作正常,它警告我应该只键入字母,而当我键入字母时,它不会返回任何内容(就像它应该做的那样)。我的问题是,当我开始键入字母后接数字时,它会接受它,例如(s45)。它所做的是接受第一个字母,而不是整个字符串。我需要它来接受整个字符串

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

使用正则表达式+原始字符串中的边界对正则表达式进行编码,如下所示:

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

将其锚定到起点和终点,并匹配一个或多个字符:

if re.match("^[a-zA-Z]+$", aString):
此处
^
锚定到字符串的开头,
$
锚定到字符串的结尾,
+
确保匹配1个或多个字符

不过,你最好还是用它来代替。无需在此处使用强大的正则表达式:

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

您可以考虑在字符串上使用ISalpHAd()。如果字符串只包含字母字符,则返回true,否则返回false

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

如果你想找一些漂亮的pythonic著作,可以选择isalpha和isdecimal:

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

返回值为空,然后尝试将
+
添加到正则表达式的末尾。不,返回部分没有问题。如果通过验证测试,它意味着什么也不返回。为什么不使用aString.isalpha()?这不是问题所在,但在我看来,这是一个相当糟糕的设计;如有必要,返回布尔值并在调用代码中打印错误消息…问题标题具有误导性,解决方案解决了描述的问题,而不是如何匹配整个字符串。此应用程序的
isalpha()
的一个很好的属性是,对于空字符串,它返回
False
,因此,不再需要单独的测试。感谢大家的快速回答,他们都帮助我解决了这个问题。您需要这个:
^
和re.match吗?是不是暗示了?@buffer:是的,是暗示了;然而,我更喜欢一个明确的锚,因为你绝对需要
$
,太多的人会因为
re.search()
re.match()
@MartijnPieters之间的差异而困惑:这是一个好建议。我无法从文档中推断将
^
re.match放置在一起是否会产生任何副作用