为什么我的正则表达式模式允许数字?

时间:2016-10-20 20:58:49

标签: python regex python-2.7

我尝试创建一个只匹配字母并允许空格的正则表达式模式:

import re
user_input = raw_input('Input: ')

if re.match('[A-Za-z ]', user_input):
    print user_input

然而,

输入o888或类似内容时,似乎仍会出现匹配

1 个答案:

答案 0 :(得分:5)

这是因为您的正则表达式允许部分匹配。

使用

if re.match('[A-Za-z ]*$', user_input):
                      ^^

将模式锚定在最后并匹配0+字符。由于re.match将模式锚定在字符串的开头,因此不需要^锚点,但需要$ - 字符串结尾 - 以强制执行完整的字符串匹配。

如果您不想允许空字符串,请使用+量词 - 一次或多次出现 - 而不是*零次或多次出现< / em>的)。