Skip to main content
 首页 » 编程设计

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

2025年05月04日3098°冷暖

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

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

但是,

当输入 o888 或类似的东西时,匹配似乎仍然发生

请您参考如下方法:

发生这种情况是因为您的正则表达式允许部分 匹配。

使用

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

将模式锚定在末尾并匹配 0+ 个字符。作为re.match将模式锚定在字符串的开头,^ anchor 不是必需的,但是 $ - 字符串结尾 - 是强制执行完整字符串匹配所必需的。

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