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

Tho*_*mas 15 python string match

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

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

Mar*_*ers 40

将其锚定到开头和结尾,并匹配一个或多个字符:

if re.match("^[a-zA-Z]+$", aString):
Run Code Online (Sandbox Code Playgroud)

这里^锚定到字符串的开头$到结尾,并+确保匹配1个或多个字符.

不过,你最好只使用str.isalpha()它.没有必要在这里找到沉重的正则表达锤:

>>> 'foobar'.isalpha()
True
>>> 'foobar42'.isalpha()
False
>>> ''.isalpha()
False
Run Code Online (Sandbox Code Playgroud)

  • @buffer:是的,暗示; 我更喜欢一个明确的锚点,因为你绝对需要`$`,并且有太多人绊倒`re.search()`和`re.match()`之间的区别. (4认同)
  • 你需要这个:`^`和re.match?不暗示吗? (3认同)

Apr*_*ion 5

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

r"^[a-zA-Z]+$"
Run Code Online (Sandbox Code Playgroud)